CSS属性梳理

CSS之属性逻辑结构图

本文梳理之CSS属性结构

该图显示了一些CSS的属性,好了,下面就一个个具体讲解;

了解CSS的盒子模型

在CSS中,每个元素都被看做一个盒子模型,而这种盒子模型在二维上看就是一个矩形,如下图所示:

标准盒子模型

通常来说,我们指定width、height属性就是指定Content部分的宽度和长度,实际上我们可以通过设置box-sizing来定义长与宽所代表的内容;

box-sizing 是CSS3新引入的样式,其有如下可选值:

  • content-box : 默认属性,定义width、height指代Content的宽、高(上图内1层蓝色的部分);

  • padding-box :定义width、height指代上图内2层黄色和蓝色部分的宽和高;

  • border-box : 定义width、height指代上图内3层的宽和高;

边框

这里所说的边框主要指margin、border和padding三部分;

margin

margin包括4个部分:margin-top、margin-right、margin-bottom和margin-left,是指与其他元素之间的距离;margin可以对4个方向进行统一设置,也可以对其中的方向分别设置:

<style type="text/css">
  /*margin后面所跟的参数个数可以是1、2、3或4*/

  /*1:设置div 4个方向的margin(留白)都为20px;*/
  div{margin:20px;}
  /*2:设置div上下的margin为20px,左右的margin为10px*/
  div{margin:20px 10px;}
  /*3:设置div的上-右-下-左margin分别为30px,20px,10px,20px*/
  div{margin:30px 20px 10px;}
  /*4:设置div的上-右-下-左margin分别为40,30px,20px,10px*/
  div{margin:40px 30px 20px 10px;}

  /*也可以通过margin-XXX指定XXX方向的margin*/
  div{margin-top: 20px;}

</style>

margin的参数值还可以是:

  • % : 规定基于父元素 宽度 的百分比的外边距;比如父元素style为 width:400px;height:200px; , 那么竖直方向上margin-top:%50等价于margin-top:200px,而不是margin-top:100px

  • auto : auto作用于水平方向而不是竖直方向;代码margin:auto,设置所有方向的margin为auto,浏览器将计算父元素和本元素的宽度,计算左右留白,计算公为:左(右)margin = (父元素宽度-本元素宽度)/2 ;

默认情况下,margin的值被设置为 0 ;

margin部分的背景色使用父元素的background-color ;

border

border即为元素的矩形边框;border最重要的3个属性为:

  • border-width : 指定border的宽度,可以有的参数可以是1个、2个、3个或4个,与margin的4种不同参数的情况相同;参数类型可以是数值,如10px,也可以是thin(细)、medium(中等)、thick(粗)或inherit(继承);

  • border-style :边框线的样式,其取值如下:

描述
none 定义无边框
hidden 与none相同,对于表,hidden 用于解决边框冲突
dotted 定义点状边框
dashed 定义虚线
solid 定义实线
double 定义双线
groove 定义3D凹槽边框
ridge 定义3D 垄状边框
inset 定义3D inset 边框
outset 定义3D outset 边框
inherit 规定从父元素继承边框样式
  • border-color : 定义边框颜色;

这3个属性可以单独定义,也可以通过border属性同时定义,eg:

border : 3px solid red;

其中,3个参数的顺序没有要求;

  • border-radius : 设置border矩形4个角的圆角半径;

  • border-image : 有时候,如果突发奇想,想为某个元素添加花圈,该属性就能派上用场了;

padding

设置content与border之间的距离;该部分使用background-color进行颜色填充;也是4个方向的设置:padding-top、padding-right、padding-bottom、padding-left;

box-shadow

设置边框的阴影,使其更有立体感;具体设置见 CSS3 box-shadow介绍;

背景

背景的内容有两种,一种是通过颜色进行填充,另一种是以图片进行填充;

  • background-color : 设置背景以指定的颜色进行填充;

  • background-image : 设置背景以指定的图片进行填充;

背景填充类型

当通过 background-image 指定以图片进行背景填充后,当图片尺寸小于元素尺寸导致图片不能覆盖整个元素时,可通过 background-repeat 设置图片的填充方式;该属性的值选项如下:

  • repeat : 默认,背景图片在垂直和水平方向上重复;

  • repeat-x : 背景图片只在水平方向上重复;

  • repeat-y : 背景图片只在垂直方向上重复;

  • no-repeat : 背景图片仅显示一次,不重复显示;

  • inherit : 从父元素继承该属性;

背景是否固定

background-attachment 可以是指背景是否随滚动条的移动而移动;属性如下:

  • scroll : 默认值,背景图片会随着页面其他部分一起移动;
  • fixed : 当页面的其余部分滚动时,背景图片不会移动;
  • inherit : 从父元素继承该属性;

设置背景图片开始绘制的位置

通过设置 background-position可以设置从什么地方开始绘制背景图片;

其选项有以下几种类型:

  • x% y% : 设元素的宽度为e_width,高度为e_height;设图片的宽度img_width,高度为img_height,则x% y% 表示图片(img_width × x% , img_height × y%)的坐标点 与 元素中的 (e_width × x% , e_height × y%)的点重合;

注意:在计算机上,左上角点设为(0,0)点,x轴水平向右,y轴垂直向下;

故:0% 0%表示图片左上角点与元素的左上角点重合,100% 100%表示图片右下角点与元素的右下角点重合,50% 50%表示图片中心点与元素中心重合;

如果background-repeat为no-repeat时,因为只是绘制一张图片,上述论述非常容易理解;如果背景图片以repeat方式填充,可以理解为在完成上述一张图片的绘制后,以该图片为基准位置,进行重复填充;

  • 通过 left/center/right 和 top/center/bottom 的组合设置位置
组合类型 对应%x %y形式
left top 0% 0%
left center 0% 50%
left bottom 0% 100%
center top 50% 0%
center center 50% 50%
center bottom 50% 100%
right top 100% 0%
right center 100% 50%
right bottom 100% 100%
  • 通过数值指定

例如,30px 20px 表示图片的左上角点位于元素(30px,20px)的坐标位置,换言之,从元素的(30px,20px)位置开始绘制图片;

确定元素的(0,0)点

设置background-position,我们说left top是指将图片的左上角点与元素的左上角点相重合,图片的左上角点容易确定,但哪里是元素的左上角点呢,这就需要通过下面的这个属性来确定了:

background-origin

该属性可以取以下的几种值:

  • content-box : content 部分的左上角点设为元素(0,0)点;

  • padding-box : padding部分的左上角点设为元素(0,0)点;

  • border-box : border部分的左上角点设为元素(0,0)点;

您应该觉得挺眼熟,对的,box-sizing 的属性也是这3个值;

background-clip

该属性规定了填充到哪里终止,有以下3个属性:

  • content-box : 只保留在content内的填充;

  • padding-box : 保留content和padding内的填充;

  • border-box : 保留content、padding、border的填充,注意,如果border-style是solid类型,则看不出结果,因为即使在border区域内填充,也会被border覆盖掉,可以通过设置border-style为dotted查看效果;

文本CSS设置

文本格式

text-transform : 该属性能够控制文本的大小写,而不论源文档中文本的大小写;该属性能取以下值:

  • none : 默认值,不改变源文档中文本的大小写;

  • capitalize : 文本中的每个单词以大写字母开头;

  • uppercase : 文本中的所有字母变为大写;

  • lowercase : 文本中的所有字母变为小写;

  • inherit : 该属性从父元素继承;

字体控制

  • font-size : 取求值如下
含义
xx-small 非常小
x-small
small 较小
medium 中等,与父元素字体尺寸相同
large 较大
x-large
xx-large 非常大
smaller 比父元素更小
larger 比父元素更大
length 指定字体为具体的尺寸,如20px
% 设置基于父元素尺寸的一个百分比
100%等价于medium
inherit 从父元素继承该属性
  • font-weight : 定义字体加粗的程度,其取值如下:
含义
normal 正常显示,如果h1使用该属性值,将不加粗
bold 粗体显示
bolder 更粗的字体显示
lighter 更细的字体显示
数值 由细到粗为100、200、300、...、900
inherit 从父元素继承
  • font-variant : 设置是否将文本转为小型大写字母显示,其可取的值如下:
含义
normal 默认值,标准字体显示
small-cap 小型大写字母显示
inherit 从父元素继承该属性
  • font-family : 定义字体类型;

  • text-decoration : 定义文本修饰,其可取的值为:

含义
none 默认值,正常显示
underline 文字加下划线
line-through 文字中间加横线(类似删除线)
overline 文字加上划线
blink 文本闪烁
inherit 从父元素继承该属性
  • color : 定义文本颜色

文本布局

  • line-height : 定义文本的行高,其可取的值如下:
含义
normal 默认值,表示正常显示
number 设置数字,该数字会与当前的字体尺寸相乘来设置行高
length 设置固定的行间距
% 基于当前字体的百分比行间距,200%等价于2
inherit 从父元素继承该属性
  • letter-spacing : 每个字符之间的水平间距大小,其可取值如下:
含义
normal 默认,规定字符间没有额外的空间
length 规定字符间的固定空间,可以为负,表示文本重叠长度
inherit 从父元素继承该属性
  • word-spacing : 每个单词间的距离,以空格分割的称为一个单词,单词间的实际距离为 空格宽度 + wordspacing

其值与letter-spacing一样,有normal、length和inherit 3种;

  • text-align : 设置块级元素内文本的对齐方向,其值可取:
含义
left 左对齐
right 右对齐
center 居中
justify 两端对齐(貌似没有效果)
inherit 从父元素继承
  • text-indent : 定义文本的首行缩进;
含义
length 定义固定的首行缩进值,如32px
% 定义基于 父元素宽度 的百分比缩进
50%表示首行从父元素中间位置开始
  • vertical-align : 当一行元素中,有的元素高度不相同,定义这些元素在垂直方向上的对齐方式;

  • white-space : 定义某个元素对文本中空白符的处理;其取值如下:

含义
normal 换行符会被忽略,多个连续空格显示一个</br>当文本长度超过元素宽度后,自动换行
pre 换行符、多个连续空格都会以原样显示
不自动换行
nowrap 类似normal,只是当文本长度超过元素宽度后,</br>不自动换行,而是出现水平滚动条
pre-line 换行符保留,多个连续空格显示一个
inherit 从父元素继承该属性

列表控制

  • list-style-type : 设置列表项标记类型,其可取值如下:
含义
none 无标记
disc 默认值,列表前用实心圆进行标记
circle 空心圆
square 实心方块
decimal 数字
decimal-leading-zero 以0开头的数字,如01、02
lower-roman 小写罗马字母,如i,ii,iii,iv
upper-roman 大写罗马字母,如I,II,III,IV
lower-alpha 小写英文字母
upper-alpha 大写英文字母
lower-greek 小写希腊字母
lower-latin 小写拉丁字母,与lower-alpha相同
upper-latin 大写拉丁字母,与upper-alpha相同
hebrew 传统的希伯来编号方式
armenian 传统的亚美尼亚编号方式
georgian 传统的乔治亚编号方式
  • list-style-position : 定义列表项标记的位置,其可取值如下:
含义
inside 列表项标记也被放在文本内部,当文本超过一行,换行后的首字与标记对齐
outside 列表项标记不被放在文本内部,当文本超过一行,换行后的首字与上一行文字对齐首字
inherit 从父元素继承该属性值
  • list-style-image : 定义列表项标记所使用的图片,其取值如下:
含义
none 不使用图片作为列表项标记
url 使用图片作为列表项标记
通过url进行指定
inherit 通过父元素继承该属性

其他

  • visiblity : 定义元素的可见性;
含义
visible 默认值,元素可见
hidden 元素不可见
inherit 从父元素继承该属性值
  • overflow : 规定当内容溢出元素框时发生的事情;
含义
visible 默认值,内容显示在元素外
hidden 不显示溢出的内容
scroll 显示滚动条供用户拖动查看内容</br>同时显示水平和垂直滚动条
auto 只有内容被不能全部显示在元素内,才出现滚动条
inherit 从父元素继承该属性
  • clip : 用于img对象,指定显示的区域;
含义
rect(t,r,b,l) 指定一个矩形区域,上下左右分别为t,r,b,l 4个值
auto 默认值,不进行截取
inherit 从父元素继承clip属性的值
  • cursor : 指定当鼠标移动到元素上时所显示的鼠标形状;

PS

以上内容很多参考了w3c上的内容;

还有很多的内容没有写上来,因为CSS3涉及的内容实在太多,比如颜色模型、渐变、2D、3D模型;这些内容都有很多内容,所以,以后用到再总结好了;

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,747评论 1 92
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,744评论 0 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,312评论 0 11
  • 1.块级元素和行内元素 块级(block-level)元素;行内(内联、inline-level)元素。 块元素的...
    饥人谷_小侯阅读 1,998评论 1 4
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,044评论 0 1