web前台技术学习总结(1)-CSS实现全浏览器兼容的ellipsis

参加项目已经有一段时间了,笔者在web标准设计方面的学习有了不少进步.之 前学习和实践都是边Google边看书进行的,只输入没输出,也很少和大家进行交流 .项目已经接近尾声,有必要进行总结,把自己学到的悟到的在博客园与大家分享 交流,同时温故知新,希望在此过程中学到更多的东西.于是,就有了本系列文 章.

最开始来一个比较容易说的清楚的吧.

截取固定长度字符有很多实现方法:一是让后台直接截好后写到前台,二是当 DOM加载完后用JS截取,第三就是用CSS来进行.第一个方法对于前台来说不用做什 么操作,但是会对服务器造成多余的负担;第二个方法看似很好,既可以跨浏览器, 有不用担心增加服务器的负担,但是按照progressive enhancement的设计原则, 是不可取的,而且JS一般是在DOM加载完成后载入的,这样,整个渲染过程会暴露的 用户面前,体验是比较糟糕的.

基于以上的考虑,我采用了第三种方法,但就不得不考虑跨浏览器的问题. 很 奇怪的是,在文字截取这方面,firefox要落后于其他浏览器,它竟然不支持text- overflow:ellipsis! Google了一下,居然有国外牛人另辟蹊径,用firefox本身特 有的XUL标记语言对此进行hack,比较完美的解决了这个问题. 我对此进行了总结 和转化,写成了一个全浏览器兼容的CSS类,具体操作如下:

把以下XML文件(用的是XUL标记)保存为ellipsis.xml放相关CSS同目录 下:

<?xml version="1.0"?>
  <bindings
  xmlns="http://www.mozilla.org/xbl"
  xmlns:xbl="http://www.mozilla.org/xbl"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.o nly.xul"
  >
    <binding id="ellipsis">
      <content>
        <xul:window>
          <xul:description crop="end"  xbl:inherits="value=xbl:text">
            <children/>
          </xul:description>
        </xul:window>
      </content>
    </binding>
  </bindings>

下面就是我用的CSS类:

.ellipsis {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;/*针对IE和webkit核心(Google  Chrome,Safari)*/
  -o-text-overflow: ellipsis; /*针对Opera */
  -moz-binding: url('ellipsis.xml#ellipsis');/*针对 Firefox 进行 XUL的绑定*/
}

用法.使用这个类的元素必须是block或inline-block级别,拥有width属 性.

比如

<a class="sample ellipsis"  href="/group/miantan">XXXX</a>

其中sample类为

.sample{
  display:block;
  width:14em;
}

这样使用,可以解决大多数的问题,但这中方法并不是完美无缺的,它也有自己 的不足,那就是只能截取一行的文字,如果要截取多行的文字,我就只能采用js的 方法了.

时间: 2024-08-03 22:41:17

web前台技术学习总结(1)-CSS实现全浏览器兼容的ellipsis的相关文章

web前台技术学习总结(3)-轻便型全站javascript部署

问题的提出 一年前刚开始做项目的时候,我对于前台技术还刚刚入门 ,用jquery写点小打小闹的交互效果还是没太大问题,但是要把所有这些效果干净 ,整洁的部署到全站,对我来说就有点头疼了.由于网站页面虽说不是特别多,但也 有二三十个,如果每个页面写一个单独的js文件或者直接把js写在页面内,是不利 于维护和有损前台性能的.按照yahoo的前台性能提升建议,应该尽量减少js文件 个数.于是我决定想办法把除了 jquery库及一些插件之外自写代码全部写到一个 文件之中.虽然可能有时候某些页面载入的js

web前台技术学习总结(2)-用jQuery自定义的请求JSON方法

jQuery库中的ajax工具很优秀,也很实用,除了方便的预设方法,还可以通过自 定义来满足自己的要求. 比如,自带$.getJSON方法能够很简洁快速的进行ajax的JSON请求: $.getJSON("/getjsonresponse", {param1:value1},function(data){ //请求成功时的操作 }); 但是,如果想要定义请求错误时的操作,或者修改其他ajax请求的参数,这个工 具就不适用了.因此,根据需要,可以用$.ajax方法(这个方法是 jquer

学习:使用CSS修改IE浏览器滚动条的参数

css|浏览器 有朋友常提关于IE滚动条的问题,特总结该贴.简单地介绍一下涉及浏览器滚动条的样式表内容(某些样式需ie5.5+才能支持): 1.overflow内容溢出时的设置(设定被设定对象是否显示滚动条)overflow-x水平方向内容溢出时的设置overflow-y垂直方向内容溢出时的设置以上三个属性设置的值为visible(默认值).scroll.hidden.auto. 2.scrollbar-3d-light-color立体滚动条亮边的颜色(设置滚动条的颜色)scrollbar-ar

学习:使用CSS样式表布局网页兼容要点分析

css|网页|样式表 IE vs FFCSS 兼容要点: DOCTYPE 影响 CSS 处理 FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行 FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中 FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !import

CSS&amp;nbsp;hack浏览器兼容一览表

css|浏览器 作者: 2006-1-20 10:34:52 CSS hack是指我们为了兼容各浏览器,而使用的特别的css定义技巧.这是国外摘来的一张CSS hack列表,显示了各浏览器对css hack的支持程度,对我们制作兼容网页非常有帮助.

关于css中不同浏览器兼容详解(1/6)

由于浏览器的开发商越来越多,关于css教程兼容也是各位设计师,站长们讨论的热门话题了,下面我们总结了一些学用中的css兼容问题的. 1.div的垂直居中问题 vertical-align:middle;将行距增加到和整个div一样高line-height:200px;然后插入文字,就垂直居中了.缺点是控制内容不要换行 2 margin加倍的问题 设置为float的div在ie下设置的matgin会加倍.这是ie6都存在的bug.解决方案是在这个div里面加上display:inline;例如 <

20个让你学习并精通CSS的国外网站

CSS的学习过程既可以说简单又可以说是复杂.CSS的语法比较简单,但CSS的应用中有一些概念(一可以说是原理)还是很难掌握的.今天暴风彬彬 向你推荐20个出色的CSS技术类(英语)网站帮你更好的理解和掌握CSS,其中包括各种各样的网站,从博客到清单风格列表甚至网站,它们都侧重于研究同 一个主题,那就是CSS. 1. A List Apart CSS Topics A List Apart,学习网页设计和最佳实践的首选网站.这个网站从1999年就开始发表关于CSS的文章,其中大部分文章都是面向那些

Web网页标准学习:从“div+css”说起谈结构的重要性

css|web|标准|网页 大家都知道,web标准在中国传播初期,人们使用"div+css"描述web标准,似乎有点道理,根据国内网页设计师的编码水平,看似就是使用div配合css来替代table布局. 可是学过一段时间web标准的人士,都知道这是误解,那么有人提出,摒弃div+css的说法,提倡XHTML+CSS的说法,因为要使用两门语言来架构网页,但是这种称呼也不准确,不完整,因为只提到了XHTML1.0标准和CSS2.0(CSS2.1)规范. 其实web标准就是web标准,叫别的

Web开发学习心得4——CSS盒模式与排版

首先简单讲一下盒模式,所谓盒模式,是CSS看待元素的方式,CSS将每个单一的元素都看作一个盒子,如下图所示: 开发学习心得4--CSS盒模式与排版-">之所以叫它盒模式,是因为它跟我们日常生活中的盒子非常相似,这里不多说了.CSS中大部分的属性都是用来控制content的,比如width.height.color等:padding.border.margin都是可选的,其中,padding.margin表示的是一片空白区域,只能控制其大小,border是一个可见的边框,可以控制其边框样式.