另发表于Levi.Blog和oschina
使用CSS3可以在不引入额外的标记或图像的情况下,为大多数元素(包括表单元素、图像,甚至段落文本)创建圆角。
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" /> <title>Rounded Corners</title> <link rel="stylesheet" href="css/rounded-corners.css" /></head><body><div class="all-corners"></div><div class="one-corner"></div><div class="elliptical-corners"></div><div class="circle"></div></body></html> 使用CSS圆角的四个例子,包含了必要的厂商前缀以支持旧版的Android、Mobile Safari和Safari浏览器。对于.circle
,使用75px
与50%
的效果是一样的,因为该元素的大小为150像素*150像素
。
为元素创建四个相同的圆角
这一步是可选的,输入-webkit-border-radius: r
,这里的r
是圆角的半径大小,表示为长度(带单位)。输入border-radius: r
,这里的r
是圆角的半径大小,使用与第一步中相同的值。这是该属性的标准短形式语法。为元素创建一个圆角
这一步是可选的,输入-webkit-border-top-left-radius: r
,这里的r
是左上方圆角的半径大小,表示为长度(带单位)。输入border-top-left-radius: r
,这里的r
使用与第一步中相同的值。这是该属性的标准长形式语法。创建右上方圆角使用top-right
;创建右下方圆角使用bottom-right
;创建左下方圆角使用bottom-left
。创建椭圆形圆角
这一步是可选的,输入-webkit-border-radius: x/y
,其中x
是圆角在水平方向上的半径大小,y
是圆角在垂直方向上的半径大小,均表示为长度(带单位)。输入border-radius: x/y
,其中x
和y
跟第一步中的值相等。使用border-radius(属性不是继承的)创建图形
输入-webkit-border-radius: r
这里的r
是元素的半径大小(带长度单位)。要创建圆形,可以使用短形式的语法,r
的值应该等于元素高度或宽度的一半。输入border-radius: r
这里的r是元素的半径大小(带长度单位),跟第一步中的r
相等。这是标准的无前缀语法。 注:不支持border-radius
的旧的浏览器仅会以方角呈现元素。border-radius
仅影响施加该样式的元素的角,不会影响其子元素的角。因此如果一个子元素有背景,该背景就有可能显示在一个或多个父元素的角的位置,从而影响圆角样式。有时元素的背景(这里讲的不是子元素的背景)会透过其圆角。为了避免这种情况,可以在元素的border-radius
声明后面增加一条样式规则:background-clip: padding-box;
。
使用text-shadow
可以在不使用图像表示文本的情况下,为段落、标题等元素中的文本添加动态的阴影效果。
为元素的文本添加阴影
输入text-shadow:
。分别输入表示x-offset
(水平偏移量)、y-offset
(垂直偏移量)、blur-radius
(模糊半径)和color
的值(前三个值带长度单位,四个值之间不用逗号分隔),例如 -2px 3px 7px #999
。为元素的文本添加多重阴影
输入text-shadow:
。分别输入x-offset
(水平偏移量)、y-offset
(垂直偏移量)、blur-radius
(模糊半径)和color
的值(前三个值带长度单位,四个值之间不用逗号分隔)。blur-radius
的值是可选的。输入,(逗号)。对四种属性使用不同的值重复第二步。<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" /> <title>Text Shadow</title> <link rel="stylesheet" href="css/text-shadow.css" /></head><body><p class="basic">Basic Shadow</p><p class="basic-negative">Basic Shadow</p><p class="blur">Blur Radius</p><p class="blur-inversed">Blur Radius</p><p class="multiple">Multiple Text Shadows</p></body></html>body { background: #fff; color: #222; font: 100%/1.05 helvetica, sans-serif; padding-top: 20px;}p { color: #222; /* nearly black */ font-size: 4.5em; font-weight: bold; margin: 0 0 45px;}p:last-child { margin: 0;}.basic { text-shadow: 3px 3px #aaa;}/* uses negative offsets--you can mix positive and negative ones, too. */.basic-negative { text-shadow: -4px -2px #ccc; /* a little lighter grey than #aaa */}.blur { text-shadow: 2px 2px 10px grey;}.blur-inversed { color: white; text-shadow: 2px 2px 10px #000; /* black */}/* this example has two shadows, but you can include more by separating each with a comma */.multiple { text-shadow: 2px 2px white, 6px 6px rgba(50,50,50,.25);} 这些类演示了几种text-shadow
的效果。第一个、第二个和第五个都省略了模糊半径的值。.multiple
类告诉我们,可以为单个元素添加多个阴影样式,每组属性之间用逗号分隔。这样,通过结合使用多个阴影样式,可以创建出特殊而有趣的效果。
将text-shadow(属性是继承的)改回默认值 即输入text-shadow: none;
,这个属性不需要输入使用厂商前缀。
text-shadow
属性接受四个值:带长度单位的x-offset
、带长度单位的y-offset
、可选的带长度单位的blur-radius
以及color
值。如不指定blur-radius
,将假定其值为0。x-offset
和y-offset
值可以是正整数也可以是负整数,也就是说1px
和-1px
都是有效的。blur-radius
值必须是正整数。这三个值都可以为0。尽管text-shadow
的语法与边框和背景属性的语法是类似的,但它不能像边框和背景那样单独的指定四个属性值。如果不指定text-shadow
,它就会使用初始值none
。
为其他元素添加阴影 使用text-shadow
属性可以为元素的文本添加阴影,使用box-shadow
属性则可以为元素本身添加阴影。他们的基础属性集是相同的,不过box-shadow
还允许使用使用两个可选的属性:inset
关键字属性和sPRead
属性(用于扩张或收缩阴影)。 box-shadow
属性接受六个值:带长度单位的x-offset
和y-offset
、可选的带长度单位的blur-radius
、可选的inset
关键字、可选的带长度单位的spread
值及color
值。如果不指定blur-radius
和spread
的值,则设为0。
上面程序用于演示使用box-shadow
添加一个或多个阴影的效果。前五个类各自应用了一个彼此不同的阴影样式。最后一个类应用了两个阴影(还可以应用更多个阴影)。不理解box-shadow
的浏览器会直接忽略这些CSS样式规则,呈现没有阴影的页面。
为元素添加阴影
输入-webkit-box-shadow:
。分别输入表示x-offset
、y-offset
、blur-radius
、spread
和color
的值(前四个值均带长度单位),例如 2px
2px
5px
#333
。输入box-shadow:
,再重复第二步。创建内阴影
输入-webkit-box-shadow:
。分别输入表示表示x-offset
、y-offset
、blur-radius
、spread
和color
的值(前四个值均带长度单位),例如 2px
2px
5px
#333
。在冒号后输入inset
,再输入一个空格(也可以在第二步之前输入inset
和一个空格)。输入box-shadow:
,再重复第二步和第三步。为元素应用多重阴影
输入-webkit-box-shadow:
。分别输入表示表示x-offset
、y-offset
、blur-radius
、spread
和color
的值(前四个值均带长度单位),例如 2px
2px
5px
#333
。如果有必要,将inset
关键字包含在内。输入逗号。对每种属性使用不同的值重复第二步。输入box-shadow:
,再重复第二步至第四步。将box-shadow(属性是不继承的)改回默认值
输入-webkit-box-shadow: none;
。输入box-shadow: none;
。注:x-offset
、y-offset
和spread
值可以是正整数,也可以是负整数。blur-radius
值必须是正整数。这三个值都可以为零。inset
关键字可以让阴影位于元素内部。
多重背景几乎可以应用于任何元素。
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" /> <title>Multiple Backgrounds</title> <link rel="stylesheet" href="css/multiple-backgrounds.css" /></head><body><div class="night-sky"> <h1>In the night sky...</h1></div></body></html>....night-sky { background-color: navy; /* fallback color */ background-image: url(../img/ufo.png), url(../img/stars.png), url(../img/stars.png), url(../img/sky.png); background-position: 50% 102%, 100% -150px, 0 -150px, 50% 100%; background-repeat: no-repeat, no-repeat, no-repeat, repeat-x; height: 300px; margin: 25px auto 0; /* slightly different than book */ padding-top: 36px; width: 75%;}为单个元素应用多重背景图像(不需要使用厂商前缀)
输入background-color: b
,这里的b是希望为元素应用的备用背景颜色。输入background-image: u
,这里的u
是绝对或相对路径引用的url
列表(用逗号分隔。支持多重背景的浏览器,图像是分层次相互重叠在一起的,用逗号分隔的列表中的第一个图像位于顶部。)输入background-position: p
,这里的p
是成对的x-offset
和y-offset
(可以是正的,也可以是负的;带长度单位或者关键字,如center top
)的集合,用逗号分隔。对于第二步中指定的每个url
,都应有一组x-offset
和y-offset
。输入background-repeat: r
,这里的r
是repeat-x
、repeat-y
或no-repeat
值,用逗号分隔,第二步中指定的每个url
对应一个值。对于多重背景图像,可以使用标准的短形式语法,即使用逗号分隔每组背景参数。这种表示方法的好处是开发者既可以指定备用背景颜色,也可以为旧的浏览器指定图像。
.night-sky { /* fallback with both a color and image */ background: navy url(../img/ufo.png) no-repeat center bottom; /* for supporting browsers */ background: url(../img/ufo.png) no-repeat 50% 102%, url(../img/stars.png) no-repeat 100% -150px, url(../img/stars.png) no-repeat 0 -150px, url(../img/sky.png) repeat-x 50% 100%; height: 300px; margin: 25px auto 0; padding-top: 36px; width: 75%;}创建备用背景颜色
输入background: color
或者background-color: color
,这里的color
可以是十六进制数、RGB值以及其他任何支持的颜色名称,另外也可以使用图像。最好不要将RGBA、HSL或HSLA值作为备用背景颜色(如果你不打算支持IE则不必在意),因为IE8及以前的版本不支持。
定义线性渐变
输入background: linear-gradient(
。如果希望渐变方向是从上向下(默认方向),则可以跳过这一步。输入方向后面加一个逗号,方向指to top
、to right
、to bottom right
、to top right
等这样的值。或者输入方向后面加一个逗号,这里的方向指的是角度值(如45deg
、107deg
等)。根据后面讲到的“指定颜色”等,定义渐变颜色。输入);
完成渐变。定义径向渐变
输入background: radial-gradient(
。指定渐变的形状。希望指定尺寸则可根据第三步中指定的尺寸自行确定。否则输入circle
或ellipse
。指定渐变的尺寸。如果希望尺寸为自动指定的值(默认值为·farthest-corner·,最远的角),则跳过这一步。否则输入代表渐变宽度和高度的一个长度值(如200px
或7em
)或代表宽度和高度的一对值(390px
175px
或60%
85%
)。注意,如果只使用一个值,则这个值不能是百分数。或者输入closest-side
、farthest-side
、closest-corner
或farthest-corner
。这些关键字代表相对于渐变的中心,渐变可以伸展到多大的空间。边界决定了渐变的尺寸。指定渐变的位置。希望渐变的位置从元素的中心开始(默认值)则可跳过这一步。输入at top
、at right
、at bottom left
、at top right
等表示渐变中心位置的值。或者输入表示渐变中心位置的一对坐标,并以at
开头,例如at 200px 43px
、at 30% 40%
、at 50% -10px
等。定义渐变颜色。输入);
完成渐变。指定颜色 输入至少两种颜色,每种颜色之间用逗号分隔。指定的第一个颜色出现在渐变的开始位置,最后一个出现的颜色出现在渐变的结束位置。对于径向渐变,它们分别为最里边的颜色和最外边的颜色。
使用opacity
属性可以修改元素的透明度。方法是输入opacity: x
,这里的x
表示元素元素的不透明程度(两位小数,不带单位)。 opacity
的默认值为1(完全不透明),范围为0~1
。 通过使用opacity
属性和:hover
伪属性,可以产生一些有趣且实用的效果。例如img { opacity: .75; }
默认情况下可以将图片设置为75%的不透明度,img:hover { opacity: 1; }
可导致用户鼠标停留在元素上时元素变为不透明。在将缩略图链接到全尺寸版本时经常看到这种效果。对于访问者来说,悬浮可增强图像的动感。 opacity
属性与使用RGBA或HSLA设置的透明背景色是两个容易混淆的概念。opacity
影响的是整个元素(包括其内容),而background-color: rgba(128,0,64,.6);
这样的设置仅影响背景的透明度。
使用:before
和:after
伪元素可以很方便地为页面添加一些令人难以置信的设计效果。它们可以与content
属性结合使用,从而创建所谓的生成内容。生成内容指的是通过CSS创建的内容而不是HTML生成的。
通过上面代码,可以使带有class="more"
的元素会在其后显示一个双箭头,以后如需变动,修改也只需要修改.more
类即可,而不需要改动大量的HTML页面。
浏览器中文本显示速度很快,但是图像往往会减慢页面的加载速度。为解决这一问题,可以将多个图像拼合成单个背景图像(sprite
),再通过CSS控制具体显示图像的哪一部分,使用的就是background-position
属性。
可以将sprite
应用于任意数量的元素。在上面这个例子中,使用.icon:before
来实现所需的效果。这样sprite
就是通过content: " ";
生成的空格的背景图像。将其设置为display: block;
,从而就可以设置与图标大小匹配的高度和宽度。没有这三个属性,图像将不会显示。通过使用background-position
,可以将正确的图标放入该位置。
HTML and CSS 读书笔记
本文为本人原创,采用 知识共享 “署名-非商业性使用-相同方式共享” 4.0 (CC BY-NC-SA 4.0)”许可协议 进行许可。 本作品可自由复制、传播及基于本作品进行演绎创作。如有以上需要,请通过E-mail等方式告知,并在文章开头明显位置加上署名 [ 丁学文.Blog ] 、原文链接及许可协议信息,并明确指出修改(如有),不得用于商业用途。谢谢合作。 详情请点击查看许可协议及版权声明具体内容。
博主联系方式: E-mail: xuewending1995@Gmail.com [ 请注明来意 ] GitHub: Levi.GitHub
新闻热点
疑难解答