CSS3其它重要样式

颜色相关样式

在CSS3之前,在样式中指定的颜色值只能为RGB颜色值,并且只能通过opacity属性来设置元素的透明度。CSS3中增加了3种颜色值RGBA颜色值、HSL颜色值及HSLA颜色值,并且允许通过对RGBA颜色值和HSLA颜色值设定alpha通道的方法来更加容易地实现将半透明文字与图像互相重叠的效果。

利用alpha通道来设定颜色

对RGB颜色设定alpha通道

在CSS3中,可以通过对RGB颜色设定alpha通道的方法来定义RGBA颜色。所谓RGBA颜色,是指利用红色值(R)、绿色值(G)、蓝色值(B)、alpha通道值(A)来定义的颜色。其中,alpha通道值的范围为0~1.0。0表示完全透明,1表示不透明。

background-color:rgba(255,0,0,0.5);
对HSL颜色设定alpha通道

HSL颜色使用色调(H)、饱和度(S)、亮度(L)来定义颜色。其中,色调值中用0或360表示红色,120表示绿色,240表示蓝色,当取值大于360时,实际的值等于该值除以360之后的余数。饱和度和亮度的取值范围均为0%到100%。可以通过对HSL颜色设定alpha通道的方法来定义HSLA颜色。HSLA颜色是指利用色调(H)、饱和度(S)、亮度(L),alpha通道值(A)来定义颜色。

<style>
div{
  width:100%;
  height:100px;
  color:white;
}
div#div1{
  background-color:hsl(120,100%,50%); 
  color: hsl(0,100%,100%);
}
div#div2{
  background-color:hsla(120,100%,50%,0.5); 
  color: hsla(0,100%,100%,0.5); 
}
</style>
<div id="div1">示例文字1</div>
<div id="div2">示例文字2</div>

alpha通道与opacity属性的区别

opacity属性是CSS中专门用来指定透明度的一个属性,取值范围也在0-之间。0表示完全透明, 1表示不透明。使用alpha通道对元素设定透明度时,可以单独针对元素的背景色和文字颜色等来指定透明度,而opacity属性只能指定整个元素的透明度。

<style>
div{
  width:100%;
  height:100px;
  color:white;
  font-size:48px;
}
div#div1{
  background-color:rgb(0,255,100);
  color:rgb(255,255,255);
}
div#div2{
  background-color:rgba(0,255,100,0.5);
  color:rgb(255,255,255);
}
div#div3{
  background-color:rgba(0,255,100,0.5);
  color:rgba(255,255,255,0.5);
}
div#div4{
  background-color:rgb(0,255,100);
  color:rgb(255,255,255);
  opacity:0.5;
}
</style>
<div id="div1">示例文字1</div>
<div id="div2">示例文字2</div>
<div id="div3">示例文字3</div>
<div id="div4">示例文字4</div>

对第2个div元素的背景色使用alpha通道时,并不会对文字产生影响,如果要让该元素的文字颜色也变成半透明,需要像第3个div元素那样同时对背景色和文字颜色使用alpha通道。但是,在第4个div元素的样式代码中,因为使用一次opacity属性,文字颜色和背景色都变成半透明的了。
在低版本IE中不支持opacity属性,需要使用filter:Alpha(opacity=50)来实现透明效果。

指定颜色值为transparent

如果将颜色值指定为transparent,则会将背景、文字或边框等的颜色设定为完全透明,相当于使用了值为0的alpha通道。
在CSS3中,可以在一切指定颜色值的属性中指定transparent值。

// 3个div元素的背景色均为白色,边框均为黄色,文字均为黑色
<style type="text/css">
div{
  background-color: white;
  border: solid 3px yellow;
  width: 100%;
  height: 100px;
}
div#div1{
  background-color: transparent;
}
div#div2{
  border-color: transparent;
}
div#div3{
  color: transparent;
}
</style>
<div id="div1">示例文字1</div>
<div id="div2">示例文字2</div>
<div id="div3">示例文字3</div>

用户界面相关样式

轮廓相关样式

CSS2中的outline属性

在CSS2中定义了一个outline属性,用来在元素周围绘制一条轮廓线,可以起到突出元素的作用。

<style type="text/css">
input#male{
    outline:thin solid red
}
</style>
性别:<input type="radio" id=male name=sexRadio/>男
<input type="radio"  id=female name=sexRadio/>女

效果如图:


outline属性的使用方法如下所示:

outline: outline-color outline-style outline-width
  • outline-color参数表示轮廓线的颜色,可以省略该参数,省略时默认值为黑色。
  • outline- style参数表示轮廓线的样式,可以省略该参数,省略时默认值为none,省略后不对该轮廓线
    进行绘制。
  • outline-width参数表示轮廓线的宽度,属性值可以为一个宽度值,譬如40px,或者thinmediumthick中的任意一个值。可以省略该参数,省略时默认值为medium,表示绘制中等宽度的轮廓钱。

outline属性的属性值中三个参数的顺序可以互换,也可以分开写。

<style type="text/css ">
input#male{
    outline-color: red;
    outline-style: solid;
    outline-width: thin;
}
</style>
CSS3中新增的out-offset属性

在默认情况下,对带有边框的元素来说,使用outline属性将紧贴着边框外围绘制一条轮廓线。有时,我们不想让这条轮廓线紧贴着边框外围,想让轮廓线稍微向外偏离几个像素,以绘制出双层边框的效果。针对这种情况, CSS3中新增了一个outline-offset属性,可以使用该属性来实现这个效果。outline-offset属性的值表示向外偏离多少个像素。

<style type="text/css">
div{
  border:blue solid thin;
  outline:red solid thin;
  outline-offset:2px;
</style>

效果如图:

也可以给outline-offset属性指定一个为负数的属性值,指定为负数的属性值后,轮廓线将向内偏移,绘制在边框内部。

resize属性

resize属性允许用户通过拖动的方式来修改元素的尺寸。主要用于可以使用overflow属性的任何容器元素中。

<style type="text/css">
#div1{
  background-color: pink;
  overflow: auto;
  resize: both;
  width: 150px;
  height: 150px;
}
#div2{
  background-color: orange;
  width: 100%;
  height: 150px;
}
</style>
<div id=div1>示例文字</div>
<div id=div2>页面中其他内容</div>

可以为resize属性指定的值有以下几种:

  • none:用户不能修改元素尺寸。
  • both:用户可以修改元素的宽度和高度。
  • horizontal:用户可以修改元素的宽度,但不能修改元素的高度。
  • vertical:用户可以修改元素的高度, 但不能修改元素的宽度。
  • inherit:继承父元素的resize属性值。

取消对元素的样式指定一initial属性值

在CSS3中,可以利用initial属性值取消对元素的样式指定。

<style type="text/css">
p{
  color:blue;
  font-family:宋体;
}
p#text01{
  color:initial;
  color:-moz-initial;
  font-family:宋体;
}
</style>
<p id="text01">示例文字1</p>
<p id="text02">示例文字2</p>
<p id="text03">示例文字3</p>

initial属性值的作用是让各种属性使用默认值,在浏览器中文字颜色的默认值是黑色,所以idtext01p元素中的文字颜色会变为黑色。

使用initial属性值并不等于取消样式设定的特例

例如一个文字为"你好"的h1元素,浏览器默认对该元素使用了一些样式。如果我们重新定义h1元素的样式,接着,在新定义的样式后面追加一段h1元素使用的样式,对重新定义的样式使用initial属性值。这个显示结果与不使用任何样式设定时的显示结果并不相同。
为什么在h1元素的样式代码中追加了initial属性值后的显示结果与不使用任何样式设定时的显示结果会不一样呢?因为追加了initial属性值的样式设定后,h1元素的字号和字体粗细均使用CSS中对字号和字体粗细属性设定的默认值,并不考虑浏览器对h1元素追加了什么样式。而在CSS中,字号的默认值为medium,字体粗细的默认值为normal,与浏览器对h1元素使用的样式并不一致。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354