常用重要CSS样式的属性

html-css013

常用重要CSS样式的属性,第1张

盒子模型是CSS中一个很重要的概念,页面中的所有元素都可以看成一个盒子,并占据一定的页面空间,一个页面由很多盒子组成,盒子之间会互相影响。只有掌握盒模型以及其中每个属性的用法,才能真正控制好页面元素。

盒子模型主要定义四个区域: 内容(content)、内边距/填充(padding)、边框(border)和外边距(margin)

盒子的内容区域存放文本和图片等页面元素,拥有如下属性:

边框基本属性:

通过一个属性设置四个方向边框的宽度、样式、颜色

属性:border

取值:width style color

只设置某一条边框的宽度、样式、颜色

语法:border-方向(top/right/bottom/left):width style color

只设置边框的宽度、样式、颜色中的一种

语法:border-属性(width/style/color):取值

只设置某一条边框的宽度、样式、颜色中的一种

语法:border-方向(top/right/bottom/left)-属性(width/style/color):取值

属性:border-radius

作用:设置倒角位置处圆的半径,半径越大,弧度越大。

取值:

属性:border-image

语法:

border-image-source :引入背景图片

取值:

默认值:无图片

url(图片URL地址)

border-image-slice :切割引入背景图片,把边框背景切成9份

取值:

number:默认单位px

百分比:

fill:保留边框图像的中间部分

border-image-width :指定边框图片的宽度

border-image-repeat :指定边框背景图片的排列方式,可定义2个参数,即水平和垂直方向

取值:

Stretch:默认值,拉伸

Repeat:平铺

Round:取整平铺

内容区域和边框(边缘)之间的距离

语法:padding: 值;

单边设置:padding-方向(top/right/bottom/left):值;

取值:

数值px

百分比

内边距的简写方式:

padding:value

四个方向内边距的值均为value

padding:value1 value2

Value1为上下内边距的值,value2为左右内边距的值

padding:value1 value2 value3

Value1为上内边距的值,value2为左右内边距的值,value3为下内边距的值

padding:value1 value2 value3 value4

上右下左内边距的值分别为value1, value2, value3, value4

外边距指元素与元素之间的距离,即围绕在元素边框之外的空白区域,通过外边距可以为元素创建额外的“空间”。默认不能被其他元素所占据,用于拉伸两个元素间的距离。

语法:margin: 值;

单边设置:margin-方向(top/right/bottom/left):值;

取值:

重新制定元素尺寸计算模式

属性:box-sizing

取值:

属性:resize

取值:

位于元素边框之外的一条线

属性:

outline:width style color

属性:box-shadow

语法:

box-shadow: h-shadow v-shadow blur spread color inset

取值:由一组值构成的值列表

属性:background-color

取值:颜色值或transparent

注意:背景颜色是从边框位置处开始绘制

属性:background-image

取值:url(背景图像URL)

属性:background-repeat

取值:

属性:background-attchment

取值:

scroll:默认值,滚动

fixed:固定

属性:background-position

取值:

属性:background-size

取值:

属性:background-origin

取值:

属性:background-clip

取值:

CSS3多背景通过为每个背景属性提供多个属性值实现。

font 简写属性语法:

将所有字体属性合写为一行,其中font-family是复合属性中必不可少的属性。

可以不设置其中的某个值,如果省略值地话,就使用属性的默认值。

②文本属性:

(2)CSS3文本阴影属性:

属性:text-shadow

作用:产生阴影和模糊主体

语法:

作用:定义列表的编号样式

属性:list-style-type

作用:用于设置列表项的图像属性

语法:

图像URL地址:图像的相对路径或绝对路径

none:默认值,不指定图像

注意:图片图标与文字之间的距离在不同浏览器中是不一样的,因此,一般情况下不采用这种方式来设置列表的图片样式。

通过设置<li>的背景图片的方式来设置列表图片基本步骤:

设置list-style-type属性值为none

设置<li>标记的背景属性backgruond

作用:用于声明列表标志相对于列表项内容的位置

语法:

作用:可以同时设定列表样式类型、列表样式位置、列表样式图片等属性的值。

语法:

注意:

可以不设置其中的某个值,未设置的属性采用默认值

同时指定list-style-image和list-style-type时,list-style-image优先显示,除非list-style-image设置为none,或图片路径错误无法显示

当列表与列表项目同时使用样式时,列表项目的样式优先显示

特点:

可以设置宽度和高度

默认情况下每个块级元素独占一行

作用:

块级元素主要用于页面布局

常用块级元素:

<div>、<p>、<h1>~<h6>、<ol>、<ul>等

特点:

不可以设置宽度和高度,其宽度就是自身文字或图片的宽度

默认情况下多个行内元素会在一行内显示,遇父元素边界时会自动换行

作用:

行内元素主要用于设置文样式

常用行内元素:

<a>、<span>、<em>、<b>、<i>、<strong>、<img>、<input>等

作用:控制页面元素脱离原有文档流,实现向左或向右移动,直到该元素外边缘碰到其包含框或另一个浮动框的边缘停止,标准流中的其他盒子将顶到浮动盒子的位置。浮动的元素不占据实际空间。

属性: float

取值:

浮动元素不会相互重叠;

浮动元素不会上下浮动,如果一个浮动元素在另一个浮动元素之后显示,而且会超出容纳块,则它下降到低于先前任何浮动元素的位置。

作用:规定元素的哪一侧不允许出现其他浮动元素。

取值:

作用:控制页面元素在页面中的位置。

属性:position

取值:static/relative/absolute/fiexed

默认属性值,元素按照标准文档流进行排列,块级元素独占一行, 行内元素位于一行内显示,一行显示不下,自动换行。

特点:

相对于自身原有位置进行偏移

仍处于标准文档流中

随即拥有偏移属性和z-idex属性

偏移属性:

left:数值px

right:数值px

top:数值px

bottom:数值px

当元素相对定位后会产生Z轴上的堆叠,不设置z-index属性时,默认该元素出现在X轴和Y轴构成的平面上。

特点:

建立了以包含块为基准的定位

绝对定位的元素的位置相对于最近的已定位祖先元素(设定了绝对定位、相对定位或固定定位中的任何一种),如果元素没有已定位的祖先元素,则该元素的位置相对于浏览器窗口。

完全脱离了标准文档流

随即拥有偏移属性和z-idex属性

偏移属性:

left:数值px

right:数值px

top:数值px

bottom:数值px

绝对定位未设置偏移量的特点:

无论是否存在已经定位的祖先元素,都保持在元素的初始位置

脱离了标准文档流

设定固定定位的元素框的表现类似于将position设置为absolute,不过其包含块是浏览器窗口本身。

在计算机显示中把垂直于屏幕平面的方向称为Z方向,CSS绝对定位容器的z-index属性即对应该方向。

作用:用于控制元素的层叠次序,使得某个元素浮于其他元素之上。

语法:

auto:遵循其父元素的定位

number:整数,可负,值大者叠加在上层

注意:使用z-index属性时,要求该元素的position属性值为absolute、relative或fixed。

作用:用于定义建立布局时元素生成的显示框类型

语法:dispaly:值

作用:用于定义建立布局时元素生成的显示框类型

语法:visibility:值

层叠性 是指多种CSS样式的叠加,也是浏览器处理冲突的一个能力,如果一个属性通过两个相同选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉。

定义CSS样式时,经常出现两个或更多规则应用在同一元素上

·选择器相同,则执行层叠性

·选择器不同,就会出现优先级的问题,就会涉及CSS权重计算。

下面我们详解介绍 CSS层叠性权重计算方法。

1) 权重计算公式

关于CSS权重,我们需要一套计算公式来去计算,这个就是 CSS Specificity(特殊性)

值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越。

·关于CSS权重,我们需要一套计算公式来去计算,这个就是 CSS Specificity(特殊性)

2) 权重叠加

我们经常用交集选择器,后代选择器等,是有多个基础选择器组合而成,那么此时,就会出现权重叠加。

就是一个简单的加法计算

div ul li ------>0,0,0,3

.nav ul li ------>0,0,1,2

a:hover -----—>0,0,1,1

.nav a ------>0,0,1,1

注意:

数位之间没有进制 比如说: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 所以不会存在10个div能赶上一个类选择器的情况。

3) 继承的权重是0

这个不难,但是忽略很容易绕晕。其实,我们修改样式,一定要看该标签有没有被选中。

1) 如果选中了,那么以上面的公式来计权重。谁大听谁的。

2) 如果没有选中,那么权重是0,因为继承的权重为0。

前端入门Web前端HTML5+CSS3+移动Web前端全套

什么是calc()?

calc()从字面可以把他理解为一个函数function。其实calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度。比如说,你可以使用calc()给元素的border、margin、pading、font-size和width等属性设置动态值。为何说是动态值呢?因为我们使用的表达式来得到的值。不过calc()最大的好处就是用在流体布局上,可以通过calc()计算得到元素的宽度。

calc()能做什么?

calc()能让你给元素的做计算,可以给一个div元素,使用百分比、em、px和rem单位值计算出其宽度或者高度,比如说“width:calc(50% + 2em)”,这样一来你就不用考虑元素DIV的宽度值到底是多少,而把这个烦人的任务交由浏览器去计算。

calc()语法

calc()语法非常简单,就像小时候学加 (+)、减(-)、乘(*)、除(/)一样,使用数学表达式来表示:

.elm {

width: calc(expression)

}

其中"expression"是一个表达式,用来计算长度的表达式。

calc()的运算规则

calc()使用通用的数学运算规则,但是也提供更智能的功能:

使用“+”、“-”、“*” 和 “/”四则运算;

可以使用百分比、px、em、rem等单位;

可以混合使用各种单位进行计算;

表达式中有“+”和“-”时,其前后必须要有空格,如"widht: calc(12%+5em)"这种没有空格的写法是错误的;

表达式中有“*”和“/”时,其前后可以没有空格,但建议留有空格。

浏览器的兼容性

浏览器对calc()的兼容性还算不错,在IE9+、FF4.0+、Chrome19+、Safari6+都得到较好支持,同样需要在其前面加上各浏览器厂商的识别符,不过可惜的是,移动端的浏览器还没仅有“firefox for android 14.0”支持,其他的全军覆没。

在实际使用时,同样需要添加浏览器的前缀

.elm {

/*Firefox*/

-moz-calc(expression)

/*chrome safari*/

-webkit-calc(expression)

/*Standard */

calc()

}

通过上面的了解,对calc()不在那么陌生,但对于实际的运用可能还是不太了解,来看一个最常用的实例:

<div class="demo">

<div class="box"></div>

</div>

上面的结构很简单,就是一个div.demo的元素中包含了一个div.box的元素,接下来我们一步一步来看其中的变化。

第一步:添加普通样式:

.demo {

width: 300px

background: #60f

}

.box {

width: 100%

background: #f60

height: 50px

}

此时的效果很简单,就是div.box完全遮盖了div.demo,如下图所示:

calc-step1

第二步,在div.box上添加border和padding

这一步很棘手的事情来了,在div.box上添加10px的内距padding,同时添加5px的border:

.demo {

width: 300px

background: #60f

}

.box {

width: 100%

background: #f60

height: 50px

padding: 10px

border: 5px solid green

}

为了更好的说明问题,我在div.demo上添加了一个padding:3px 0

.demo {

width: 300px

background: #60f

padding: 3px 0

}

.box {

width: 100%

background: #f60

height: 50px

padding: 10px

border: 5px solid green

}

这个时候大家不知道能否想到问题会发生在哪?其实很简单,这个时候div.box的宽度大于了其容器div.demo的总宽度,从而撑破容器伸出来了,如图所示:

calc-step2

第三步,calc()的运用

为了解决撑破容器的问题,以前我们只能去计算div.box的宽度,用容器宽度减去padding和border的值,但有时候,我们苦于不知道元素的总宽度,比如说是自适应的布局,只知道一个百分值,但其他的值又是px之类的值,这就是难点,死卡住了。随着CSS3的出现,其中利用box-sizing来改变元素的盒模型类型实使实现效果,但今天我们学习的calc()方法更是方便。

知道总宽度是100%,在这个基础上减去boder的宽度(5px * 2 = 10px),在减去padding的宽度(10px * 2 = 20px),即"100% - (10px + 5px) * 2 = 30px" ,最终得到的值就是div.box的width值:

.demo {

width: 300px

background: #60f

padding: 3px 0

}

.box {

background: #f60

height: 50px

padding: 10px

border: 5px solid green

width: 90%/*写给不支持calc()的浏览器*/

width:-moz-calc(100% - (10px + 5px) * 2)

width:-webkit-calc(100% - (10px + 5px) * 2)

width: calc(100% - (10px + 5px) * 2)

}

这样一来,通过calc()计算后,div.box不在会超出其容器div.demo的宽度,如图所示:

calc-step3