CSS:描述样式

一、CSS

  css:Cascading Style Sheet,层叠样式表,用于描述网页样式

    1. 同一个标签可以有多个选择器作用,给他增加样式;

    2. 有继承性,祖先的标签的一些属性,可以继承给后代标签;

    3. 有层叠性,当遇见冲突的时候有着一套严密法律,规定谁生效谁被杠掉。

  css的维护者是w3c,最新版是css3,但是浏览器没有那么好的兼容

  css分成两部分:

    1. 选择谁?

    2. 设置什么样式?

二、选择器

  1. 标签选择器

  2. id选择器  "#"

  3. class选择器  "."

    给某一类元素,设置相同的类名,然后通过这个类名来选择它们。

    原子类:将一些简单的属性做成一个类,然后元素自行选择

  4. 后代选择器  .div1 .div3 p{}

  5. 交集选择器  p.ha{}

  6. 并集选择器  p,div{}

  7. 通配符 *{}

  继承性

    css规定,有一些属性,给某一个元素设置了,它的后代元素同样拥有这个属性了。

    有了继承性,就能够把一些初始的,基本的,普遍的设置,写在body里

    哪些元素具有继承性呢?

      color

      text-系列,例如 text-decoration:underline;

      font-系列,例如 font-size:30px;

      line-系列

    特别的,要知道不能继承的属性:background-color、所有盒模型的属性(widthheightborderpaddingmargin)都是不继承的!

  层叠性

    处理冲突的能力,就是当多个选择器都选择上了同一个标签,听谁的?

    权重:id > class > 标签

    1. 选择上了

      先比权重--再比远近(style出现的顺序)

    2. 没有选择上

      先比远近(祖辈标签的距离)--再比权重

    应用场景:先设置共性、再针对设置私有(层叠掉共性)

    !important提升权重:严禁滥用!important提升权重,只能在原子类的情况时有!

三、设置样式

  颜色表示法

    1. 单词

      blackwhiteredgreenblueyellowpinkorangepurplegoldgrayyellowgreengreenyellow等等

    2. rgb() 

      红色
      background-color: rgb(255,0,0);
      绿色
      background-color: rgb(0,255,0);
      蓝色
      background-color: rgb(0,0,255);
      黑色
      background-color: rgb(0,0,0);
      白色
      background-color: rgb(255,255,255);
      灰色
      background-color: rgb(111,111,111);

    3. 十六进制

1. 文字样式

  color

  font-size:尺寸

  line-height:行高

  font-family:字体

    网页中,为了让所有用户都有一致的体验,只能使用宋体、微软雅黑

    font-family:"Arial","Microsoft Yahei","SimSun";

  font-weight:字体权重

    font-weight:bold;   ---> font-weight:700;  加粗

    font-weight:normal; ---> font-weight:400;  不加粗

  font-style:样式

    font-style:italic;    倾斜

    font-style:normal;   不倾斜

  text-decoration:字体装饰

    text-decoration:underline;    下划线

    text-decoration:none;      默认,没有下划线

    text-decoration:line-through;   删除线

  

  font综合

  font:italic bold 12px/20px "arial","Microsoft Yahei","SimSun";

 

2. 盒子模型

  盒模型就是width、height、padding、border、margin这几个属性

  真实占有宽度 = width + 左边padding + 右边padding + 左边border + 右边border

  padding:上、右、下、左

  padding-top、padding-right、padding-bottom、padding-left;

padding:10px 20px 30px;
/*等价于*/
padding-top:10px;
padding-right:20px;
padding-bottom:30px;
padding-left:20px;/*和右边一样*/

  border:粗细 线型 颜色

  border:1px solid red;     工作中只许用solid(实线)和dashed(虚线),其他线型都有兼容问题

  border-width、border-style、border-color;

  border-top-width、border-top-style、border-top-color;

  border-bottom:none;  如果某一个边框我们不想要,那么就写none

  margin:外边框

  margin-top、margin-right、margin-bottom、margin-left;

  注意:相邻的两个margin有塌陷现象,以margin大的为准。

  居中策略

  text-align:center;   盒子中的文字水平居中

  margin:0 auto;    盒子本身水平居中

  line-height:盒子高度;  但行文本的垂直居中

3. 浮动

  标准文档流

    从左至右、从上到下、有一个"光标"的概念

    性质:空白折叠现象;高矮不齐,底边对齐;把元素分为"块级元素"和"行内级元素"

    块级元素:div、h、p、ul、li、dl、dt、dd

      能够设置宽度、高度(没有设置宽度,默认是父亲的宽度)

      不能并排

    行内级元素:span、a、b、u、i、em、strong

      不能设置宽度、高度

      可以并排

    块级和行内相互转换

      display:block;  把行内-->块  非常有用

      display:inline;  把块-->行内  丝毫无用,工作10年都遇不到

  我们发现标准文档流是做不出网页的,因为它太迂腐:能够设置宽度的不能并排,能够并排的不能设置宽高

  所以需要脱离标准流:脱离标准流一共有三种方法:浮动、绝对定位、相对定位

  浮动:float

    浮动是做并排用的

    浮动元素脱离了文档流,所以没有inline、block之分了

    浮动的儿子不能撑高父亲

    浮动在竖直方向上的margin塌陷现象消失

    浮动字围效果

  清除浮动

    有高度的盒子能够管住自己内部的浮动元素

    如果盒子没有高度,内部浮动的元素序列就乱套了,第二个序列就会追随第一个序列了。

    解决办法1:给后面的盒子加上clear:both

      缺点:box还是没有高度、margin失效

    解决方法2:隔外墙

      虽然margin失效,但可以用小技巧来弥补,可以用墙的高度来做间隔

      但是盒子依然没有高度

     解决办法3:内墙

      现在有了margin、也有了高度了,但是放置的标签太多。这些标签没有语义,看起来不爽。

     解决办法4:overflow:hidden;

      工作中常用的

      在浮动的父盒子上加 overflow:hidden;

      在两个大部分之间隔外墙

<div class="box1">  → 这个盒子没高,就写上overflow:hidden;
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
</div>
<div class="box2">  → 这个盒子没高,就写上overflow:hidden;
    <p>1</p>
    <p>2</p>
    <p>3</p>
</div>

  

4. 定位

  position:relative;  相对定位

  position:absolute;  绝对定位

  position:fixed;    固定定位

  子绝父相

  z-index   只有定位的元素才能写z-index值;从父现象(父亲怂了,儿子再牛逼也没有用)

5. 背景

  属性

  background:red url(1.jpg) no-repeat -10px -100px fixed;

  background-color:red;

  background-image:url(images/1.jpg);

  background-repeat:no-repeat/repeat-x/repeat-y;

  background-attachment:fixed;  固定

  background-position:100px 200px;     

    最常见的应用:CSS精灵

    就是把多个小杂碎图片,合成一张图片,然后通过backgroud-position定位只显示其中一部分。

    这样能够显著降低HTTP请求数

    CSS:描述样式

  应用:

    通栏banner/大背景

    background-position:center top;    ---->background-position:50% 0;

    背景图的应用

    先导符号放到padding里

    <h1>爱前端-专业的前端开发培训</h1> 

.header h1{
    width: 221px;
    height: 68px;
    background:url(images/logo.png);
    /*h1中的文字方便搜索引擎抓取,背景图用于展示*/
    line-height: 400px;
    overflow: hidden;
}    

   

6. 表格、列表

ul{

    list-style:none;

}

7. 超链接美化

  伪类:link、visited、hover、active

  爱恨准则:love hate

  常见写法:

  a:link,a:visited{}

  a:hover{}

  

  

/*楔形小三角*/
div{
    width: 0px;
    height: 0px;
    border: 10px solid white;
    border-top-color:blue;
    border-bottom: none;
    transition:all 0.4s ease 0s;
}
div:hover{
    transform:rotate(180deg);
}