169it科技资讯
169it -->


当前位置:  编程技术>WEB前端

从零学CSS系列之文本属性

    来源: 互联网  发布时间:2014-10-07

1.line-height

可以给某个元素指定一个不带单位的缩放因子,这样它的后代元素就会继承这个缩放因子,再根据自身的字号大小来计算自己的行高(line-height)值,

代码如下:

body {
  font-size: 12px;
  line-height: 1.5;
}

h1 {
  font-size: 36px;
}

这里,body 的 line-height 是 18px(12 * 1.5),而 h1 的 line-height 则是 54px(36 * 1.5)。

就算使用 em,百分比等相对单位,后代元素继承的仍然是计算后的行高(line-height)值,比如把上面的 body 行高改成 1.5em,那么 h1 的行高就会继承这个值 18px。

2.text-decoration

文本修饰是非继承类属性,给 body 元素设置为 none,并不会影响到后代中默认有文本修饰的元素,例如超链接,所以如果要去掉超链接的默认下划线还是需要单独进行设置,

代码如下:

a {
  text-decoration: none;
}

虽然该属性默认不继承,但是祖先元素上设置的修饰会“延伸”到后代元素中,

代码如下:

<p>我有下划线 <span>我咋会有下划线呢?</span></p>

代码如下:

p {
  color: red;
  text-decoration: underline;
}

p span {
  color: green;
  text-decoration: none;
}

这里的下划线是 p 元素的。

代码如下:

p {
  color: red;
  text-decoration: underline;
}

p span {
  color: green;
  text-decoration: underline;
}

由于文本修饰属性的延伸会造成一些兼容性的问题,所以

最好的做法就是给需要修饰的文本单独设置 text-decoration 属性。

3.text-indent

可以使用该属性给每个段落首行缩进2个字符,而不是使用空格,

代码如下:

p {
  text-indent: 2em;
}

也可以指定一个负数的值,产生首行悬挂的效果,

让引号悬挂也是一种常用做法,

让文本缩进到一个足够远的地方,可以让文字消失,

代码如下:

text-indent: -9999px;

 因此,通常的图像替换文字常用方法,

代码如下:

.logo {
  background: url(logo.png) no-repeat;
  display: inline-block;
  height: 36px;
  text-indent: -9999px;
  width: 72px;
}

IE6/7 并不真正支持 inline-block,某些情况下可能会导致 .logo 消失不见,可以使用浮动或者 block 替代 inline-block,不过两者都会改变布局方式,也可以使用其它方法。

4.text-overflow

通常情况下,长串的URL地址,在超出容器时会溢出,我们可以设定当文本溢出包含容器时显示省略符号,

代码如下:

li {
  overflow: hidden;
  text-overflow: ellipsis;
}


必须配合 overflow: hidden; 一起使用;有时候可能还得加上一个宽度,比如IE 6,

对于那些默认情况下并不会溢出的文本,需要强制其在一行内显示,这样才能产生效果,

代码如下:

li {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%; /* for IE 6 */
}

使用 white-space: pre; 或者 word-break: keep-all; 也能强制文本在一行显示,不过各有各的问题。

在 IE 8/9 中,有时候会发现没有效果,那有可能是祖先元素中某个元素设置了word-wrap: break-word; 而该属性会表现得比 white-space: nowrap; 更强势,所以,有时候还得加上下面代码,

代码如下:

word-wrap: normal;

5.text-shadow

在非白色背景的深色文字上,可以实现漂亮的内嵌效果,

代码如下:

text-shadow: 0 1px 0 rgba(255,255,255,.75);

可以给文本添加多个阴影,用逗号分隔,

代码如下:

text-shadow: 0 1px 0 #fff, 0 2px 0 #ddd, 0 3px 0 #ddd, 0 4px 0 #ddd;

6.white-space

white-space 属性设置如何处理元素内的空白。

设置值为 nowrap 让文本可以在同一行上继续,遇到边界也不会换行,直到遇到 <br> 标签,

代码如下:

white-space: nowrap;

有时我们希望保留文本中的空格和换行符之类的,比如展示计算机的源代码的时候,就会用到 <pre>,而 <pre> 的 white-space 属性的值就是 pre,

代码如下:

pre {
  white-space: pre;
}

pre 也不那么尽如人意,遇到边界的时候不会自动换行,所以 CSS 2.1 新增了 pre-wrap,

代码如下:

pre {
  white-space: pre;
  white-space: pre-wrap;
}

这样 pre 元素里的内容既能保持原有的格式,又能在内容超出边界的时候自动换行。

由于不是所有浏览器都支持 pre-wrap,所以还需要让那些不支持浏览器强制换行,

代码如下:

pre {
  white-space: pre;
  white-space: pre-wrap;
  word-wrap: break-word;
}

当然,也许你并不希望换行,也不介意水平滚动条,那可以用水平滚动条来代替换行,

代码如下:

pre {
  overflow: auto;
}

7.word-break

目前 webkit 大家族(包括 Google Chrome,Safari,Android Browser 等等)均不支持 keep-all 值,所以能用的也就 break-all 了,

代码如下:

word-break: break-all;

不过会造成英文文本阅读障碍,应该慎用,

8.word-wrap

这是比 word-break 更好的实现文本换行的方式,

代码如下:

word-wrap: break-word;

再添加一个溢出隐藏,避免一些恶意的连续字符,

代码如下:

overflow: hidden;

    
相关技术文章:
    ▪HTML 标签

     在默认情况下,FF和IE的解释标准是不一样的,也就是说,如果一个网页没有声明DOCTYPE,它就会以默认的DOCTYPE解释下面的HTML。在同 一种标准下,不同浏览器的解释模型都有所差异,如果声明标准不同,不用我说,您自己想就可以了。学习网页标准,浏览器兼容,从哪里开始您自己决定,但是, 请认识DOCTYPE: 一、什么是DOCTYPE DOCTYPE是Document Type(文档类型)的简写,在页面中,用来指定页面所使用的XHTML(或者HTML)的版本。要想制作符合标准的页面,一个必不可少的关键组成部分就 是DOCTYPE声明。只有确定了一个正确的DOCTYPE,XHTML里的标识......


    ▪CSS3+Js实现响应式导航条

     今天制作了一个响应式导航条,能够自动随着不同的屏幕分辨率或浏览器窗口大小的不同而改变导航条的样式,这里主要用到的就是CSS3的Media Query。具体可以查看浅谈响应式布局这篇文章,这里就不花费大量的篇幅介绍了,主要看一下这个导航条该怎么做。 另外需要提到的是,ie6-ie8是不支持CSS3的Media Query的,因此对于ie6-ie8我们需要特殊处理,就让他们保持默认样式,这对于布局及样式上都要考虑到这一点。 首先看一下布局这一块,html代码如下: 代码如下:<div class="navBar">    <d......


    ▪CSS3实例分享之多重背景的实现(Multiple backgrounds)

     CSS3的诞生为我们解决了这一问题,在CSS3里,通过background-image或者background可以为一个容器设置多张背景图像,也就是说可以把不同背景图象只放到一个块元素里。 首先我们来看一下语法吧: background : [background-image] | [background-origin] | [background-clip] | [background-repeat] | [background-size] | [background-attachment] | [background-position] 多个背景图片的url之间使用逗号隔开即可,如果有多个背景图片,而其他属性只有一个(例如background-repeat只有一个),那么所有背景图片都应用该属性值。 下面我们就看一个例子吧: 这里我们要使用5张图片作......


 
最新技术文章:
    ▪css white-space:nowrap属性用法(可以强制文字不换行输出)

     强制不换行,直接使用white-space:nowrap即可。CSS设置不转行: overflow:hidden 隐藏 white-space:normal 默认 pre 换行和其他空白字符都将受到保护 nowrap 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象例:强制不换行 代码如下: div{white-space:nowrap;} ......


    ▪IE里button设置border:none属性无效解决方法

     某个元素设置无边框,只需要给元素设置border:none即可,当然设置border:0效果一样,但实际上两者是有性能差别的 代码如下:border:none:边框设置为为none,不做任何处理;border:0:边框宽度设置为0像素,但是实际上border-color和border-style还是在渲染的。然而在IE中,对于button和input元素确并不是这样,在IE6,7中border:none仅等价于border-style:none,而边框所占的空间还是在的。这导致了调input的宽度和高度在各个浏览器中不统一!在IE6,7中,虽然设置了border:none后,边框仍存在。不信你试一试。下面给......


    ▪border:none与border:0使用区别

     一、border:noneborder-style的简写在chrome审查元素看到以下结果 代码如下:element.style {border: none;border-top-style: none;border-right-style: none;border-bottom-style: none;border-left-style: none;border-width: initial;border-color: initial;}在firefox中用firebug查看元素会看到以下结果: 代码如下:element.style {    border: medium none;}注意这个medium值二、border:0border-width的简写在chrome审查元素看到以下结果......


 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号