CSS

CSS(cascading style sheet,层叠样式表)是一种制作网页的新技术,现在已经为大多数浏览器所支持,成为网页设计必不可少的工具之一。

 CSS三大特性

层叠性: 样式冲突遵循就近原则

继承性: 子标签会继承父标签的一些样式(一般文字相关的都可以继承)

优先级:  

 

 

每个CSS样式由两个组成部分:选择器和声明。声明又包括属性和属性值。每个声明之后用分号结束。

css注释

/*这是注释*/

css引入方式

行内式是在标记的style属性中设定CSS样式。不推荐大规模使用。

<p style="color: red">Hello world.</p>

内部样式

嵌入式是将CSS样式集中写在网页的<head></head>标签对的<style></style>标签对中,修改全部内容的标签。格式如下:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            background-color: #2b99ff;
        }
    </style>
</head>

外部样式

外部样式就是将css写在一个单独的文件中,然后在页面进行引入即可。推荐使用此方式。

<link rel="stylesheet" href="文件路径" type="text/css"/>

css选择器

基本选择器

标签选择器(元素选择器)

标签选择器专为某一标签设置属性

p {color: "red";}

id选择器

id选择器为拥有一个id的标签设置属性

#i1 {background-color: red;}

类别选择器

所有继承此类的都会拥有类中的属性

.c1 {font-size: 14px;}

继承c1类的p元素都会拥有类中的属性

p.c1 {color: red;}

通用选择器

通用选择器为所有的标签设置属性

* {color:blue;}

层级选择器

组合选择器

多个选择器具有相同属性,就可以将选择器进行组合

h2, p {color:gray;}
/*一定要有",",如果没有这个逗号,那么规则的含义将完全不同。参见后代选择器。*/

后代选择器

div p {color: green;}
/*div中所有的p都设置此属性*/

儿子选择器

div>p{color:red}
/*只有div下一级的p设置此属性*/

毗邻选择器

input+label{color:red}
/*紧跟在input后面的同级的label会设置属性*/

弟弟选择器

div~p{color:red}
/*位于div标签后同级的p标签都会设置属性*/

属性选择器

[ppp] {color: red;}
/*所有拥有ppp属性的标签都会设置此样式,ppp是自己设置的,也可以是原有的*/

p[ppp] {color: red;}
/*只有p标签中拥有ppp属性才会设置此样式*/

[ppp='zhi'] {color: red;} 
/*只有ppp属性等于zhi时,才会设置此样式*/

a[href="www.baidu.com"] {color: red;}
/*这里的属性原有的,当超链接地址为百度时设置字体为红色*/

/*下面是不常用的*/
div[ppp~="zhi"] {color: red;}
/*ppp的值只有包含zhi才会设置样式,"zhi"需要和其他的分隔开来*/

div[ppp|="zhi"] {color: red;}
/*ppp的值只有以"zhi"开头才会设置样式,"zhi"需要和其他的使用-分隔开来*/

/*模糊匹配*/
div[ppp^="zhi"] {color: red;}
/*ppp的值只有以"zhi"开头才会设置样式*/

div[ppp$="zhi"] {color: red;}
/*ppp的值只有以"zhi"结尾才会设置样式*/

div[ppp*="zhi"] {color: red;}
/*ppp的值只有包含"zhi"才会设置样式*/

伪类选择器

CSS 伪类用于向某些选择器添加特殊的效果。

a:link {color: #FF0000} /* 未访问的链接 */

a:visited {color: #00FF00} /* 已访问的链接 */

a:hover {color: #FF00FF} /* 鼠标移动到标签上 */

a:active {color: #0000FF} /* 选定的链接 */ 

before和after

/*在每个<p>元素之前插入内容*/
p:before {
  content:"hello";
  color:red;
  display: block;
}

/*在每个<p>元素之后插入内容*/
p:after {
  content:"bye";
  color:red;
  display: block;

更多

选择器的优先级

继承

继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个body定义了的字体颜色值也会应用到段落的文本中。

body {
  color: red;
}

此时页面上所有标签都会继承body的字体颜色。然而CSS继承性的权重是非常低的,是比普通元素的权重还要低的0。

我们只要给对应的标签设置字体颜色就可覆盖掉它继承的样式。

p {
  color: green;
}

此外,继承是CSS重要的一部分,我们甚至不用去考虑它为什么能够这样,但CSS继承也是有限制的。有一些属性不能被继承,如:border, margin, padding, background等。

样式优先级

层级选择器为选择器权重相加

!important不讲道理的优先选择,慎用!!!

css属性操作

css文本

字体设置

/*设置文本大小*/ 
font-size: 10px; 

/*font-family 规定元素的字体系列, 可以设置多个用,隔开, 会在电脑上检索, 检索到就不会继续向后*/
font-family: 'Lucida Bright'

/*font-weight 设置字体粗细, 能够用来取消H标签的加粗*/
font-weight: 
/* 其主要由以下几个选项
bold/ 700 字体加粗
normal/ 400 不加粗
lighter/
border/
*/

/*该属性设置使用斜体、倾斜或正常字体*/
font-style: 
/*
oblique/ 倾斜字体
normal/ 正常字体
italic/ 斜体
*/

综合设置

选择器 {font: font-style font-weight font-size/line-height font-family}

 

外观样式

/* 文本颜色 */
color:red
/*
颜色属性被用来设置文字的颜色。
颜色是通过CSS最经常的指定:
十六进制值 - 如: #FF0000
一个RGB值 - 如: RGB(255,0,0)
颜色的名称 - 如:  red
*/

/* 水平对齐 text-align 属性规定(块级)元素中的文本的水平对齐方式。*/
left      把文本排列到左边。默认值:由浏览器决定
right    把文本排列到右边
center 把文本排列到中间
justify 实现两端对齐文本效果

/* 在表单元格中,单元格内容的垂直对齐方式
该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高*/
vertical-align:-4px

/*文本行高 通俗的讲,文字高度加上文字上下的空白区域的高度 50%:基于字体大小的百分比*/
line-height: 200px;

/*text-decoration 属性用来设置或删除文本的装饰。主要是用来删除链接的下划线*/
text-decoration:none /*删除装饰*/
text-decoration:underline /*下划线*/
text-decoration:overline /*上划线*/
text-decoration:line-through /*删除线*/

text-decoration:blink /*闪烁*/

/*首行缩进150px*/
text-indent: 150px;    /* 常用em做单位, 是文字的个数 */ 

/*字母间距*/
letter-spacing: 10px; 

/*单词间距*/
word-spacing: 20px;

/*该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。
  在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式*/
vertical-align:-4px

 

显示模式

display

display:none
/* 可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。*/

display="block"
/* 将内联标签设置为块级标签, 独占一行, 有宽高*/

display="inline"
/* 块级标签设置为内联标签, 无宽高, 有内容决定多大 */

display="inline-block"
/* 既在一行显示,又能设置长和宽 */

通常none与block交换来控制显示与隐藏

visibility 可见性

visible : 对象可见
hidden : 对象隐藏
特点: 隐藏之后, 继续保留原有位置

注意与visibility:hidden的区别:

visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

  

 

CSS vertical-align 属性

背景属性

/*背景颜色*/
background-color: red;
/*支持英文颜色,十六进制颜色,rgb(取色表值)*/
background-color:rgba(0,0,0,x)/*设置背景颜色及透明度*/

/*背景图片*/
background-image: url('1.jpg');
/*
 
/* 背景重复 */
background-repeat :
 repeat(默认):背景图片平铺排满整个网页
 repeat-x:背景图片只在水平方向上平铺
 repeat-y:背景图片只在垂直方向上平铺
 no-repeat:背景图片不平铺

/*设置背景图像尺寸*/
background-size: 
/*背景位置*/ background-position: right top(20px 20px);

/* 背景图片位置 */
background-position: x轴 y轴
可选方位名词: center top bottom left right, 只写一个另一个居中
可写像素, 代表左侧距离像素, 上方距离像素, 可以为负数, 经常用于小图片合成一个图


/* 设置背景图片固定还是滚动的 */
background-attachment
scroll : 随对象内容滚动
fixed : 背景图像滚动

/* 背景半透明 */
background: rgba(0,0,0,0~1之间的透明色)

  

支持简写:

background:#ffffff url('1.png') no-repeat right top;

使用背景图片的一个常见案例就是很多网站会把很多小图标放在一张图片上,然后根据位置去显示图片。减少频繁的图片请求。

 

css盒子模型

  • margin:            用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
  • padding:           用于控制内容与边框之间的距离;   
  • Border(边框):     围绕在内边距和内容外的边框。
  • Content(内容):   盒子的内容,显示文本和图像。

margin外边距

.margin-test {
  margin-top:100px;  #上
  margin-bottom:100px;  #下
  margin-right:50px;  #右
  margin-left:50px;  #左
}

推荐使用简写:

.margin-test {
  margin: 5px 10px 15px 20px;
}

顺序:上右下左

常见居中:

.mycenter {
  margin: 0 auto; /* 上下0, 左右自动充满,  */
}

外边距垂直合并: 上下两个盒子的外边距不会累加, 按最大值

嵌套元素的垂直外边距合并:对于两个嵌套的块元素, 如果父元素没有上内边距及边框, 这父元素的上外边距会与子元素的上外边距发生合并, 合并后的外边距为两者中的最大者

解决方案:

  • 给父元素设置边框或者内边距
  • 设置overflow: hidden;

padding内填充

.padding-test {
  padding-top: 5px;
  padding-right: 10px;
  padding-bottom: 15px;
  padding-left: 20px;
}

推荐使用简写:

.padding-test {
  padding: 5px 10px 15px 20px;
}

顺序:上右下左

边框属性

边框属性 

  • border-width -- 大小
  • border-style -- 样式
  • border-color -- 颜色
  • border-radius -- 边框弧度,设置的值为顶点向外延伸的距离
  • border-collapse: collapse; 合并相邻边框
#i1 {
  border-width: 2px;
  border-style: solid;
  border-color: red;
}

通常使用简写方式:

#i1 {
  border: 2px solid red;
}

单独设置-为每个方向设置样式

#i1 {
  border-top-style:dashed; /* 虚线 */
  border-right-style:solid; /* 实线 */
  border-bottom-style:dotted; /* 点线 */
  border-left-style:none; /* 没有线 */
}

  

补充:

  • 提供一个,用于四边;
  • 提供两个,第一个用于上-下,第二个用于左-右;
  • 如果提供三个,第一个用于上,第二个用于左-右,第三个用于下;
  • 提供四个参数值,将按上-右-下-左的顺序作用于四边;

盒子阴影:

box-shadow: 水平阴影 垂直阴影 模糊距离 阴影尺寸 阴影颜色 内外阴影

  • 水平阴影: 必选, 盒子的阴影左右移动的距离
  • 垂直阴影: 必选, 盒子的阴影上下移动的距离
  • 模糊距离: 可选, 变淡扩散的距离
  • 阴影尺寸: 可选, 影子的大小 

float属性

float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

三种取值

left:向左浮动

right:向右浮动

none:默认值,不浮动

浮动规则

浮动只控制自己,

如果他之前的标签是浮动的,就挨着放,飘在后面.

如果前面的标签不是浮动的,就在下一行开始.

清除浮动

  • 方案一: 给父盒子设置高度, 

  • 方案二: 额外标签法: 在最后一个浮动的标签后新增一个标签, 设置clear:both
    • 优点: 通俗易懂, 书写方便
    • 缺点: 添加了许多无意义的标签, 结构化较差
  • 父级添加overflow属性, 设置为hidden, auto, scroll
  • 使用after微元素清除浮动, 相当于在某个标签后又新增了内容, ie6 class {*zoom:1}
    • content: 内容  
    • display: 转成块级  
    • clear: 禁止两侧浮动  
    • visibility: 不可见 
  • 使用before和after双伪元素清除浮动 
    • 标签前后都设置content:"";display:table
    • 后面在增加clear:both

是不允许元素两边的元素浮动而不是元素本身,如果设置之后有浮动元素,就会换行.

clear属性,对应的值

  left-禁止左侧有浮动元素

  right-禁止右侧有浮动元素

  both-禁止两边you浮动元素

  none -默认值,允许两边有浮动对象

可以根据clear属性解决父标签塌陷问题

父标签塌陷-因子元素漂浮,父元素没有被撑开

解决方案-添加一个禁止漂浮的标签

 

.clearfix:after { content: ""; display: block; clear: both; }

 

定位

元素的定位主要包括定位模式和边偏移两部分

边偏移

top: 顶端偏移量, 定义元素相对于其父元素上边线的距离

bottom: 底部偏移量: 定义元素相对于其父元素下边线的距离

left: 左侧偏移量, 定义元素相对于其父元素左边线的距离

right: 右侧偏移量, 定义元素相对于其父元素右边线的距离

定位模式

position属性及值

static: 静态定位

默认值,无定位,不能当做绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。

唯一的用途就是取消定位...

relative(相对定位)

相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。

有趣的是,即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。

。对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。

注意:position:relative的一个主要用法:方便绝对定位元素找到参照物。

absolute(绝对定位)

定义:设置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即body元素)。

元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

重点:如果父级设置了position属性,例如position:relative;,那么子元素就会以父级的左上角为原始点进行定位。这样能很好的解决自适应网站的标签偏离问题,即父级为自适应的,那我子元素就设置position:absolute;父元素设置position:relative;,然后Top、Right、Bottom、Left用百分比宽度表示。

另外,对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。

fixed(固定)

fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性 定义.

 注意点: 一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。这 是一个常识性的知识点,因为这是两个不同的流,一个是浮动流,另一个是“定位流”。但是 relative 却可以。因为它原本所占的空间仍然占据文档流。

在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。

top:  -- 上面移动的距离 

right:  -- 右面移动的距离 

bottom:  -- 下面移动的距离 

left:  -- 左面移动的距离 

z-index属性

z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。

注释:元素可拥有负的 z-index 属性值。

注释:Z-index 仅能在定位元素上奏效(例如 position:absolute;)!

定位盒子居中对齐

先右移50%, margin-left: -50%

overflow溢出属性

overflow(水平和垂直均设置)

overflow-x(设置水平方向)

overflow-y(设置垂直方向)

这个属性定义溢出元素内容区的内容会如何处理。如果值为 scroll,不论是否需要,用户代理都会提供一种滚动机制。因此,有可能即使元素框中可以放下所有内容也会出现滚动条。 

 

visible

默认值。内容不会被修剪,会呈现在元素框之外。

hidden

内容会被修剪,并且其余内容是不可见的。

scroll

内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。但是内容没有超出时也会出现滚动条

auto

如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。超出时才会出现滚动条

 inherit

规定应该从父元素继承 overflow 属性的值。

 鼠标样式

cursor

pointer: 小手样式

text: 文本样式

move: 十字架移动样式

default: 白箭头

其他

轮廓线: 输入框选中后出现的线

  outline: 一般设置成none, 来取消掉这个

防止拖拽文本域: textarea标签默认是可以拖拽的, 设置resize可以禁止拖拽

white-space: 设置文本显示方式, normal默认换行, nowrap强制一行显示, 直到结束或者遇到br标签才换行, 会超出盒子

text-overflow: 必须指定overflow:hidden

  ellipsis: 溢出部分用省略号代替

 

posted @ 2017-12-22 18:07  瓜田月夜  阅读(175)  评论(0)    收藏  举报