本文最初于2015-10-04发表于博客园,并在GitHub上持续更新前端的系列文章。欢迎在GitHub上关注我,一块儿入门和进阶前端。css
如下是正文。html
html中的单位只有一种,那就是像素px,因此单位是能够省略的,可是在CSS中不同。
CSS中的单位是必需要写的,由于它没有默认单位。前端
1 in
=2.54cm
=25.4mm
=72pt
=6pc
。git
各类单位的含义:github
in
:英寸Inches (1 英寸 = 2.54 厘米)cm
:厘米Centimetersmm
:毫米Millimeterspt
:点Points,或者叫英镑 (1点 = 1/72英寸)pc
:皮卡Picas (1 皮卡 = 12 点)api
相对单位:
px
:像素
em
:印刷单位至关于12个点
%
:百分比,相对周围的文字的大小浏览器
为何说像素px是一个相对单位呢,这也很好理解。好比说,电脑屏幕的的尺寸是不变的,可是咱们可让其显示不一样的分辨率,在不一样的分辨率下,单个像素的长度确定是不同的啦。微信
百分比%
这个相对单位要怎么用呢?这里也举个例子:ssh
CSS中,全部的行,都有行高。盒子模型的padding,绝对不是直接做用在文字上的,而是做用在“行”上的。学习
以下图所示:
上图中,咱们设置行高为30px,30px * 5 = 150px,经过查看审查元素,这个p标签的高度果真为150px。并且咱们发现,咱们并无给这个p标签设置高度,显然是内容将其撑高的。
垂直方向来看,文字在本身的行里是居中的。好比,文字是14px,行高是24px,那么padding就是5px:
为了严格保证字在行里面居中,咱们的工程师有一个约定: 行高、字号,通常都是偶数。这样能够保证,它们的差必定偶数,就可以被2整除。
小技巧:若是一段文本只有一行,若是此时设置行高 = 盒子高,就能够保证单行文本垂直居中。这个很好理解。
上面这个小技巧,只适用于单行文本垂直居中,不适用于多行。若是想让多行文本垂直居中,还须要计算盒子的padding。计算方式以下:
css样式中,字体属性有如下几种:
p{ font-size:50px; /*字体大小*/ line-height: 30px; /*行高*/ font-family:幼圆,黑体; /*字体类型:若是没有幼圆就显示黑体,没有黑体就显示默认*/ font-style:italic ; /*斜体*/ font-weight:bold; /*粗体:属性值写成bolder也能够*/ font-variant:small-caps; /*小写变大写*/ }
上面这些属性中,字号、行高、字体这三个属性是最多见的。咱们继续看。
一、字号、行高、字体三大属性:
(1)字号:
font-size:14px;
(2)行高:
line-height:24px;
(3)字体:(font-family就是“字体”,family是“家庭”的意思)
font-family:"宋体";
上面这三个属性,咱们可使用一行代码来实现:(字号 font-size、行高 line-height、字体 font-family)
font: 14px/24px “宋体”;
二、字体属性的说明:
(1)网页中不是全部字体都能用,由于这个字体要看用户的电脑里面装没装,好比你设置:
font-family: "华文彩云";
上方代码中,若是用户电脑里面没有这个字体,那么就会变成宋体。
页面中,中文咱们只使用:微软雅黑、宋体、黑体。英文使用:Arial、Times New Roman。页面中若是须要其余的字体,就须要切图。
(2)为了防止用户电脑里,没有微软雅黑这个字体。就要用英语的逗号,隔开备选字体。以下:(能够备选多个)
font-family: "微软雅黑","宋体";
上方代码表示:若是用户电脑里没有安装微软雅黑字体,那么就是宋体。
(3)咱们须将英语字体放在最前面,这样全部的中文,就不能匹配英语字体,就自动的变为后面的中文字体:
font-family: "Times New Roman","微软雅黑","宋体";
上方代码的意思是,英文会采用Times New Roman字体,而中文会采用微软雅黑字体(由于美国人设计的Times New Roman字体并不针对中文,因此中文会采用后面的微软雅黑)。好比说,对于smyhvae哈哈哈
这段文字,smyhvae
会采用Times New Roman字体,而哈哈哈
会采用微软雅黑字体。
但是,若是咱们把中文字体写在前面:(错误写法)
font-family: "微软雅黑","Times New Roman","宋体";
上方代码会致使,中文和英文都会采用微软雅黑字体。
(4)全部的中文字体,都有英语别名。
微软雅黑的英语别名:
font-family: "Microsoft YaHei";
宋体的英语别名:
font-family: "SimSun";
因而,当咱们把字号、行高、字体这三个属性合二为一时,也能够写成:
font:12px/30px "Times New Roman","Microsoft YaHei","SimSun";
(5)行高能够用百分比,表示字号的百分之多少。
通常来讲,百分比都是大于100%的,由于行高必定要大于字号。
好比说, font:12px/200% “宋体”
等价于font:12px/24px “宋体”
。200%
能够理解成word里面的2倍行高。
反过来, font:16px/48px “宋体”;
等价于font:16px/300% “宋体”
。
CSS样式中,常见的文本属性有如下几种:
letter-spacing: 0.5cm ;
单个字母之间的间距word-spacing: 1cm;
单词之间的间距text-decoration: underline;
字体修饰:underline下划线、line-through中划线、overline上划线text-transform: lowercase;
单词字体大小写。uppercase大写、lowercase小写color:red;
字体颜色text-align: center;
在当前容器中的对齐方式。属性值能够是:left、right、center(在当前容器的中间)、justifytext-transform: lowercase;
单词的字体大小写。属性值能够是:uppercase
(单词大写)、lowercase
(单词小写)、capitalize
(每一个单词的首字母大写)这里来一张表格的图片吧,一览无遗:
ul li{ list-style-image:url(images/2.gif) ; /*列表项前设置为图片*/ margin-left:80px; /*公有属性*/ }
另外还有一个简写属性叫作list-style
,它的做用是:将上面的多个属性写在一个声明中。
咱们来看一下list-style-image
属性的效果:
给列表前面的图片加个边距吧,否则显示不完整:
这里来一张表格的图片吧,一览无遗:
这一段涉及到浮动的知识,咱们在浮动这篇文章中会专门讲解。本段只作简单介绍。
定位属性position的属性值能够是absolute、relative。
position定位分为绝对定位和相对定位:
position:absolute;
绝对定位:定义横纵坐标,原点在父容器的左上角。脱离了自己的顺序流。横坐标用left表示,纵坐标用top表示。绝对定位的举例:
<style type="text/css"> div{ position: absolute;/*绝对定位*/ left: 10px;/*横坐标*/ top: 20px;/*纵坐标*/ } </style>
position:relative;
相对定位:相对于本身原来的位置。相对定位的举例:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style type="text/css"> body{ margin: 0px; } #div1{ width: 200px; height: 200px; border: 1px solid red; } #div2{ position: relative;/*相对定位:相对于本身原来的位置*/ left: 50px;/*横坐标:正值表示向右偏移,负值表示向左偏移*/ top: 50px;/*纵坐标:正值表示向下偏移,负值表示向上偏移*/ width: 200px; height: 200px; border: 1px solid red; } </style> </head> <body> <div id="div1">有生之年</div> <div id="div2">狭路相逢</div> </body> </html>
效果:
float
属性会让元素脱离原来的顺序流,它的属性值能够是:
none
:默认值,对象不漂浮left
:文本流向对象的右边right
:文本流向对象的左边举例:
咱们知道,在默认状况下,两个div标签是上下进行排列的。如今因为float属性让上图中的两个<div>
标签出现了浮动,因而这里两个标签在另一个层面上水平排列了。而<p>
标签还在本身的层面上听从顺序流进行排列。
clear
属性的属性值能够是:
none
:默认值,容许两边均可以有浮动对象left
:不容许左边有浮动对象right
:不容许右边有浮动对象both
:不容许有浮动对象overflow
属性的属性值能够是:
auto
:浏览器本身解决。在必需时裁切对象多余的内容或显示滚动条。通常采用这个属性值。visible
:默认值。多余的内容不剪切也不添加滚动条,会所有显示出来。hidden
:不显示超过对象尺寸的内容。scroll
:老是显示滚动条。针对上面的不一样的属性值,咱们来看一下效果:
举例:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style type="text/css"> div{ width: 100px; height: 100px; background-color: #00cc66; margin-right: 100px; float: left; } #div1{ overflow:auto;/*超出的部分让浏览器自行解决*/ } #div2{ overflow:visible;/*超出的部分会显示出来*/ } #div3{ overflow:hidden;/*超出的部分将剪切掉*/ } </style> </head> <body> <div id="div1">其实很简单 其实很天然 两我的的爱由两人分担 其实并不难 是你太悲观 隔着一道墙不跟谁分享 不想让你为难 你再也不须要给我个答案</div> <div id="div2">其实很简单 其实很天然 两我的的爱由两人分担 其实并不难 是你太悲观 隔着一道墙不跟谁分享 不想让你为难 你再也不须要给我个答案</div> <div id="div3">其实很简单 其实很天然 两我的的爱由两人分担 其实并不难 是你太悲观 隔着一道墙不跟谁分享 不想让你为难 你再也不须要给我个答案</div> </body> </html>
效果:
这句话可能比较难理解。咱们来看例子吧。
这是默认状况下的例子:(div2在上层,div1在下层)
如今加一个z-index
属性,要求效果以下:
鼠标的属性cursor
有如下几个属性值:
auto
:默认值。浏览器根据当前状况自动肯定鼠标光标类型。pointer
:IE6.0,竖起一只手指的手形光标。就像一般用户将光标移到超连接上时那样。hand
:和pointer
的做用同样:竖起一只手指的手形光标。就像一般用户将光标移到超连接上时那样。好比说,我想让鼠标放在那个标签上时,光标显示手状,代码以下:
p:hover{ cursor: pointer; }
另外还有如下的属性:(不用记,须要的时候查一下就好了)
w-resize | s-resize | n-resize | e-resize | ne-resize | sw-resize | se-resize | nw-resize
这里只举一个滤镜的例子吧。好比说让图片变成灰度图的效果,能够这样设置滤镜:
<img src="3.jpg" style="filter:gray()">
举例代码:
<body> <table> <tr> <td>原始图片</td> <td>图片加入黑白效果</td> </tr> <tr> <td><img src="3.jpg"></td> <td><img src="3.jpg" style="filter:gray()"></td> /*滤镜:设置图片为灰白效果*/ </tr> </table> </body>
效果以下:(IE有效果,google浏览器无效果)
延伸:
滤镜自己是平面设计中的知识。若是你懂一点PS的话···打开PS看看吧:
爆料一下,表示博主有两年多的平面设计经验,我作设计的时间其实比写代码的时间要长,嘿嘿···
如今,咱们利用float浮动属性来把无序列表作成一个简单的导航栏吧,效果以下:
代码:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style type="text/css"> ul{ list-style: none;/*去掉列表前面的圆点*/ width: 420px; height: 60px; background-color: black;/*设置整个导航栏的背景为灰色*/ } li{ float: left;/*平铺*/ margin-right: 30px; margin-top: 16px; } a{ text-decoration: none;/*去掉超链的下划线*/ font-size: 20px; color: #BBBBBB;/*设置超链的字体为黑色*/ font-family:微软雅黑; } </style> </head> <body> <ul> <li><a href="">博客园</a></li> <li><a href="">新随笔</a></li> <li><a href="">联系</a></li> <li><a href="">订阅</a></li> <li><a href="">管理</a></li> </ul> </body> </html>
实现效果以下:
国庆这四天,连续写了四天的博客,白天和黑夜,从未停歇,只交替没交换,为的就是这每日一发。之后会不断更新的。
想学习代码以外的软技能?不妨关注个人微信公众号:生命团队(id:vitateam
)。
扫一扫,你将发现另外一个全新的世界,而这将是一场美丽的意外: