CSS3教程(未完)……

3/20/2017 2:17:41 PM

CSS3边框

border-radius
定义圆角的形状。上右下左原则。

border-image
使用图片创建边框。

box-shadow
向方框添加阴影。
语法:box-shadow: h-shadow(必需 水平阴影) v-shadow(必需 垂直阴影) blur(模糊距离) spread(阴影尺寸) color(阴影颜色) inset(将外部阴影改为内部阴影);
说明:可实现类似照片叠加拼图的效果。

CSS3背景

background-size
可以以像素或百分比规定尺寸。如果以百分比规定尺寸,那么尺寸相对于父元素的宽度和高度

<!DOCTYPE html>
<html>
<head>
<style> 
body
{
background:url(/i/bg_flower.gif) red;
background-size:63px 100px;
-moz-background-size:63px 100px; /* 老版本的 Firefox */
background-repeat:no-repeat;
padding-top:80px;
}
</style>
</head>

<body>
<p>上面是缩小的背景图片。</p>

<p>原始图片:![](/i/bg_flower.gif)</p>

</body>
</html>

上面代码效果如下:


图片说明文字

其中body{padding-top:80px;}指的是body元素相对于自身,有一个80px的上内边距,即第一行文本元素距离页面顶部有一个80px的距离,这个值与背景图片无关。

将padding-top值设置为40px,结果如下:


图片说明文字

background-origin
规定背景图片的定位区域。背景图片可以放置于 content-box、padding-box 或 border-box 区域。

图片说明文字

<!DOCTYPE html>
<html>
<head>
<style> 
body
{
background: url('C:/Users/dolby/Pictures/yh2.jpg') 100px 300px no-repeat,url('C:/Users/dolby/Pictures/yh1.jpg') 110px 400px no-repeat;
}
div
{
border:20px solid black;
padding:20px;
background:url('C:/Users/dolby/Pictures/zl.jpg') no-repeat yellow;
background-size: 80px 60px;
color: red;
}
#div1
{
background-origin:border-box;
background-position:left;
}
#div2
{
background-origin:padding-box;
background-position:right;
}
#div3
{
background-origin:content-box;
background-position:top right;
}
</style>
</head>
<body>

<p>background-origin:border-box:</p>
<div id="div1">
这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。
</div>

<p>background-origin:content-box:</p>
<div id="div2">
这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。
</div>

<p>background-origin:padding-box:</p>
<div id="div3">
这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。这是文本。
</div>
</body>
</html>
图片说明文字

background-clip
规定背景的绘制区域。
和background-origin一样,值也为"border-box(默认)/content-box/padding-box"

<!DOCTYPE html>
<html>
<head>
<style> 
div
{
width:100px;
height:100px;
padding:10px;
background-color:yellow;
background-clip:content-box;
border:2px solid #92b901;
}
</style>
</head>
<body>

<div>
这是文本。这是文本。这是文本。
</div>

</body>
</html>
图片说明文字

若没有规定background-clip:content-box;则黄色背景会从边框开始填满。

CSS3文本效果

text-shadow
给文本添加阴影。
语法:text-shadow: h-shadow(必需 水平阴影) v-shadow(必需 垂直阴影) blur(模糊距离) color(阴影颜色);

word-wrap
允许文本在元素内强制换行。(即解决前面经常遇到的问题:写一行很长的sssssssss但不加空格,就会认为这是一整个单词而不进行拆分,表现出来的效果有问题)

<!DOCTYPE html>
<html>
<head>
<style> 
p.test
{
width:11em; 
border:1px solid #000000;
word-wrap:break-word;
}
</style>
</head>
<body>

<p class="test">This paragraph contains a very long word: thisisaveryveryveryveryveryverylongword. The long word will break and wrap to the next line.</p>

</body>
</html>

图片说明文字

去掉word-wrap:break-word;表现如下:
图片说明文字

CSS3字体

通过@font-face规则定义任意喜欢的字体。

<!DOCTYPE html>
<html>
<head>
<style> 
@font-face
{
font-family: myFirstFont;
src: url('/example/css3/Sansation_Light.ttf')
    ,url('/example/css3/Sansation_Light.eot'); /* IE9+ */
}

@font-face
{
font-family: myFirstFont;
src: url('/example/css3/Sansation_Bold.ttf')
    ,url('/example/css3/Sansation_Bold.eot'); /* IE9+ */
font-weight:bold;
}

div
{
font-family:myFirstFont;
}
</style>
</head>
<body>

<div>
With CSS3, websites can <b>finally</b> use fonts other than the pre-selected "web-safe" fonts.
</div>

<p><b>注释:</b>Internet Explorer 9+ 支持新的 @font-face 规则。Internet Explorer 8 以及更早的版本不支持新的 @font-face 规则。</p>

</body>
</html>

图片说明文字

如上,在新的@font-face规则中,必须首先定义字体的名称(比如 myFirstFont),然后指向该字体文件,通过font-family属性来引用字体的名称(myFirstFont)。
而当font-family的文本需要显示为粗体,也就是当使用了b标签时,需要另外添加一个包含该字体粗体的字体文件,为相同的字体设置许多@font-face规则来达到我们的目的。
当去掉上述代码中的第二段@font-face后,显示效果如下:
图片说明文字

语法规则示例:

<style>
@font-face
{
font-family:myFirstFont; 
src: url('Sansation_Light.ttf'),
url('Sansation_Light.eot'); /* IE9+ */
}
div
{
font-family:myFirstFont;
}
</style>

CSS 2D转换

属性:transform
值:

  • translate()定义偏移量left和top
<!DOCTYPE html>
<html>
<head>
<style> 
body
{
background:red;
}
div
{
width:100px;
height:75px;
background-color:yellow;
border:1px solid black;
}
div#div2
{
transform:translate(50px,100px);
-ms-transform:translate(50px,100px); /* IE 9 */
-moz-transform:translate(50px,100px); /* Firefox */
-webkit-transform:translate(50px,100px); /* Safari and Chrome */
-o-transform:translate(50px,100px); /* Opera */
}
div#div3
{
transform:translate(-50%,-50%);
-ms-transform:translate(-50%,-50%); /* IE 9 */
-moz-transform:translate(-50%,-50%); /* Firefox */
-webkit-transform:translate(-50%,-50%); /* Safari and Chrome */
-o-transform:translate(-50%,-50%); /* Opera */
}
</style>
</head>
<body>
<div>你好。这是一个 div 元素。</div>
<div id="div2">你好。这是一个 div 元素。</div>
<div id="div3">你好。这是一个 div 元素。</div>
</body>
</html>

效果如下:

图片说明文字

元素会以自身中心点为原点(即原本所在的位置的中心点)偏移一定的长度,transform:translate(50px,100px);表示在中心点左边添加50px,在中心点上方添加100px。
也可用比例来表示,transform:translate(-50%,-50%);表示以中心点为原点,向X轴左边添加自身宽度的-50%,向Y轴上方添加自身高度的-50%。

  • rotate()定义旋转角度
<!DOCTYPE html>
<html>
<head>
<style> 
div
{
margin:30px;
width:200px;
height:100px;
background-color:yellow;
/* Rotate div */
transform:rotate(9deg);
-ms-transform:rotate(9deg); /* Internet Explorer */
-moz-transform:rotate(9deg); /* Firefox */
-webkit-transform:rotate(9deg); /* Safari 和 Chrome */
-o-transform:rotate(9deg); /* Opera */
}
</style>
</head>
<body>
<div>Hello World</div>
</body>
</html>

元素会以自身中心点为原点旋转一定角度,角度值为正即顺时针旋转,负值为逆时针。

  • scale()定义元素尺寸在X轴和Y轴上的成比例缩放
<!DOCTYPE html>
<html>
<head>
<style> 
div
{
width:100px;
height:75px;
background-color:yellow;
border:1px solid black;
}
div#div2
{
margin:100px;
transform:scale(2,4);
-ms-transform:scale(2,4); /* IE 9 */
-moz-transform:scale(2,4); /* Firefox */
-webkit-transform:scale(2,4); /* Safari and Chrome */
-o-transform:scale(2,4); /* Opera */
}
</style>
</head>
<body>
<div>你好。这是一个 div 元素。</div>
<div id="div2">你好。这是一个 div 元素。</div>
</body>
</html>

如果没有设定div#div2,那么两个div元素应该是上下紧凑排列的,但上面代码的效果是:


图片说明文字

div2相对于它原本应该在的地方,添加了100px的margin,即位置移到了第一个div的右下角并不与之相交,然后以自身中心点为原点,宽度变为原来的2倍,高度变为原来的4倍。

  • skew()定义水平X及垂直Y翻转拉伸。
<!DOCTYPE html>
<html>
<head>
<style> 
div
{
width:100px;
height:75px;
background-color:yellow;
border:1px solid black;
}
div#div2
{
transform:skew(30deg,20deg);
-ms-transform:skew(30deg,20deg); /* IE 9 */
-moz-transform:skew(30deg,20deg); /* Firefox */
-webkit-transform:skew(30deg,20deg); /* Safari and Chrome */
-o-transform:skew(30deg,20deg); /* Opera */
}
</style>
</head>
<body>
<div>你好。这是一个 div 元素。</div>
<div id="div2">你好。这是一个 div 元素。</div>
</body>
</html>

值skew(30deg,20deg)围绕X轴把元素翻转30度,围绕Y 轴翻转20度。

  • matrix()将所有的2D转换方法组合,需要6个参数,矩阵为3*3,包括函数,允许旋转、缩放、移动及倾斜元素,注意:translate, rotate等方法都是需要单位的,而matrix方法e,f参数的单位可以省略。

transform:matrix详细介绍
以下线性代数知识:

线性代数

设原始基点H坐标为(x,y),transform:matrix(a,b,c,d,e,f)

  1. 用于偏移translate时,变换后基点H'(x'=ax+cy+e,y'=bx+dy+f),在不设置transform-origin属性时默认矩阵基点为(0,0),这时候得到的变换后基点坐标为H'(e,f);
  2. 用于缩放scale时,参数a和d分别表示X轴和Y轴缩放比例,那么对于matrix(a,0,0,d,0,0)即缩放后H'(x'=ax+cy+e=ax,y'=bx+dy+f=dy)
  3. 当matrix应用于旋转rotate时,假设角度为θ,那么matrix(cosθ,sinθ,-sinθ,cosθ,0,0),结合矩阵公式,变化后的坐标为x'=xcosθ-ysinθ+0=xcosθ-ysinθ
    y'=xsinθ+ycosθ+0=xsinθ+ycosθ
    例子:
transform:matrix(0.866,0.5,-0.5,0.866,0,0);

上面代码表示将元素旋转30°

  1. 用于拉伸skew()时,只与b,c相关,对于matrix(1,tan(θy),tan(θx),1,0,0),套用公式得到x'=x+ytan(θx)+0=x+ytan(θx)y'=xtan(θy)+y+0=xtan(θy)+y,即2D动作之后得到的基点坐标为H'[x+ytan(θx),y+xtan(θy)]
    那么,举个例子,设matrix(2,3,4,5,6,7):
    当基点坐标为(x,y)时,矩阵之后得到的基点坐标为H'(2x+4y+6,3x+5y+7),元素宽度为原来的2倍,高度为原来的5倍,还存在拉伸和旋转角度。当然,一般不会存在这么奇怪的6个参数。
  2. 用matrix实现镜像效果:
    镜像对称轴永远经过原点(0,0),那么对称轴可以用y=kx表示,已知点(x,y),求其对称点(x',y')坐标。

图片说明文字

计算步骤如下:
(y-y') / (x - x') = -1/ k
(x + x') / 2 * k = (y + y')/2
得到:
ky-ky' = -x+x'
kx+kx' = y+y'
提出x' y':
x' = (1-kk)/(kk+1) x + 2k/(kk+1) y;
y' = 2k/(k
k+1) x + (kk-1)/(kk+1) y;
结合矩阵公式:
x' = ax+cy+e;
y' = bx+dy+f;
可以得到:
a = (1-k
k)/(k
k+1);
b = 2k/(kk+1);
c = 2k/(k
k+1);
d = (kk-1)/(kk+1);

3/21/2017 2:36:16 PM
transform-origin属性
允许您改变被转换元素的基点位置。
2D转换元素能够改变元素x和y轴。3D 转换元素还能改变其Z轴。

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

推荐阅读更多精彩内容

  • 转载请声明 原文链接 关注公众号获取更多资讯 这篇文章主要总结H5的一些新增的功能以及一些基础归纳,这里只是一个提...
    程序员poetry阅读 9,056评论 22 225
  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 1,610评论 0 7
  • text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果。随着HTML5和CSS...
    arlene112阅读 2,249评论 0 1
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,724评论 0 2
  • 我想很多设计师都认同或喜欢日本的设计,不管是建筑、产品、包装,在网页设计方面,也有值得我们学习的地方。 今天精选了...
    3e39d85c28ab阅读 1,285评论 0 13