css

1.CSS基础

 

2.CSS简介

  层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力

 

2.1 分离原则CSS

  内嵌CSS一般写在html结构当中head头里面的,遵循原则的话CSS一般是和页面分离的,内容与样式分离的原则,

  等同于现在比较火的概念:结构、样式和行为分离原则。它们的中心思想是一样的,实现不同的作用之下进行代码分离。

  该原则不仅属于web标准,还是web标准中的核心概念

  一个标准的网页组成又分为三部分组成

  1).HTML文件

  2).CSS样式文件

  3).JS脚本文件

  结构、样式和行为分离可以在页内分离,也可以分别自成一个文件,都允许的。

  根据HTML标签规则行内出现样式是不标准的,也不提倡使用这种那么挫的样式,后面会仔细讲解为什么

  结构、样式和行为分离主的作用减少维护成本,提高可读性和更好的兼容性。

 

2.2 CSS样式之整体感知

如下style标签是内嵌样式风格

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">/*这对style标签,就是CSS的书写舞台,所有的CSS代码将写在里面*/
        /*选择器*/p{
            color:red;
            font-size: 30px;
            text-decoration: underline;
            font-weight: bold;
            text-align: center;
            font-style: italic;
        }
        /*选择器*/h1{
            color:blue;
            font-size: 50px;
            font-weight: bold;
            background-color: pink;
        }
  </style>
</head>
<body>
        <h1>我是一个标题</h1>
        <p>我是一个段落</p>
        <p>我是一个段落</p>
</body>
</html>

 

 <style type=”text/css”></style> 

type表示“类型” , text就是“纯文本”。css也是纯文本的。

 

2.3 选择器

  

选择器使用语法:
      
      选择器 {
          
            k:v; /*key属性名 v属性值*/
            k:v;
            k:v;
          }

选择器一些常见的属性:
  
 1.颜色属性:

    color属性的值,可以是英语单词,比如red、blue、yellow等等;也可以是rgb、十六进制

 2.字号大小:  

    font就是“字体”,size就是“尺寸”。px是“像素”。

    单位必须加,不加不行。

 3.背景颜色:

    background-color:xxx

    background 就是背景的意思

 4.加粗:

    font-weight:bold;

    bold等价于700

    font是“字体”  weight是“重量”的意思,bold粗

 5.不加粗:

    font-weight:normal;

    normal 就是正常的意思

 6.字体倾斜:

    font-sytle:italic

    italic就是“倾斜”

    不倾斜 font-style:normal;

 7. 下划线:

    text-decoration:underline;

    decration 就是“装饰”的意思。

    取消下划线:text-decoration:none;

 

2.4 类选择器

.就是类的符号,类英文名又称之为class。
所谓的类,就是class属性,class属性和id属性非常相似,任何的标签都可以携带class属性

  使用方法 在标签内填class="类名" 真正使用的时候请在CSS文件里面调用 .类名 {} “{}”内填写相关的样式属性,
class属性可以重复使用,不同标签可以引用相同的class属性,也就是说有时候我的需求不但只是p要改变颜色h3也要改变相同的颜色,
这时候可以引用同一个class属性,一个标签又可以有多个类属性,只想要用空格隔开 如class="teshu zhongyao" ,
假设 teshu类主要用于改变颜色 zhongyao类主要用于添加下划线,那么此时相当于两个类名分别各自有各自的功能,
一般情况下针对不同的情况而这样选择。


如下代码就是通过类选择器改变给指定标签改变颜色的
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        .teshu {
            color:red;
        }
    </style>
</head>
<body>
    <h3>我是一个h3</h3>
    <h3 class="teshu">我是一个h3</h3>
    <h3>我是一个h3</h3>
    <p>我是一个段落</p>
    <p class="teshu">我是一个段落</p>
    <p>我是一个段落</p>
</body>
</html>

 

  类的使用,能够决定一个人的CSS使用水平,looking如下2个案例:

 

案例1具体代码:

/*舍去html结构*/

<style type="text/css"> .pp1{ font-size: 60px; color: green; } .pp2{ color:green; text-decoration: underline; } .pp3{ font-size: 60px; text-decoration: underline; } </style> <p class="pp1">段落1</p> <p class="pp2">段落2</p> <p class="pp3">段落3</p>

 

案例2具体代码:

/*舍去html结构*/
<style type="text/css"> .lv
{ color:green; } .da { font-size: 60px; } .xian { text-decoration: underline; } </style> <p class="lv da">段落1</p>
<p class="lv xian">段落2</p> <p class="da xian">段落3</p>

 

  案例2 对比案例1 正确的思路,采用了“公共类”的思路,就是我们类就是提供“公共服务”,比如有绿、大、线,

一旦携带这个类名,就有相应的样式变化。不要用一个类名把谋个标签的所有样式写完,能提取公共属性使用的就提取。

 

一般情况下我们写样式通常用类属性的比较多,一般不提倡用ID属性,

原因:ID属性是JS用的 JS要通过ID属性得到标签。

 

2.5 后代选择器

  使用语法:

    类属性 空格 后代 ==》 .div1 p 就是.div1的后代

 

 

后代css代码:

<style type="text/css">
        .div1 > p {
            color: red;
        }
</style>

强调一下,后代不一定是儿子,比如有如下层级关系

 

    div

      ul

         li

            p

 

   我要让p变红色     首先明确一点 ul 的上一级是.div1这个div盒子,

 所谓的后代不一定是儿子的意思是,.div1已经里面已经包括了p标签 所以 .div1 p 会变成红色。

 

   首先我们要明确一点,后代选择器,只要有祖先结构即可选择上的,何为祖先结构,我们看上面列出来的层级关系 p的祖先是结构.div1,

所以能选择上也是毫无疑问的,看如下的几个案例:

 

案例1

div div .div4 div p{color:red;}
<div class="div1">
    <div class="div2">
        <div class="div3">
            <div class="div4">
                <p>我是什么颜色?</p>
            </div>
        </div>
    </div>
</div>

 

  我们可以看到案例1给出的后代选择条件是  div div .div4 div p   当到.div4的时候 接着再套一层后代div p 此时.div4结构内部根本就没有div这个标签,

所以 .div4 div p 颜色根本不会改变,因为被隔离了。

 

2.6交集选择器

  使用语法:

    标签.类名

  什么是交集选择器呢? 顾名思义就是他们之间有交集的,looking 如图以及代码

 

形成了交集如图:

  

 

具体代码:


/*舍去html结构*/


<
style type="text/css"> h3.special { color: red; } </style> <h3>我是标题</h3> <h3 class="special">我是标题</h3> <h3 class="special">我是标题</h3> <h3 class="special">我是标题</h3> <p>我是段落</p> <p>我是段落</p>

 

  我们可以看到上述代码有3个h3和.special类属性之间,是有交集的,针对上述对面而言也就是说必须要同事满足两个条件,

必须是h3标签,然后必须是含有special类属性。

  

    注意交集选择器是不需要用空格隔开的使用时 标签.类即可而不是 p 空格 .xxxx  交集选择器是可以连续交的,什么意思呢 连续交?

也就是说 比如一个标签内有两个类属性 一个叫x类属性 一个叫y类属性 分别隔开 class= 'x y' 我们连续交的时候 标签.x.y:值;

连续交这种写法是IE7开始兼容的,IE7以下都不兼容哦~

  

 

2.7 兼容问题介绍

IE: 微软的浏览器,随着操作系统安装的。所以每个windows都有IE浏览器。

windows xp   操作系统安装的IE6

windows vista 操作系统安装的IE7

windows 7    操作系统安装的IE8

windows 8    操作系统安装的IE9

windows10    操作系统安装的edge

浏览器兼容问题,要出,就基本上就是出在IE6、7身上,这两个浏览器是非常低级的浏览器。

http://www1.pconline.com.cn/pcedu/specialtopic/css3-doraemon/

 

浏览器的市场占有率: http://tongji.baidu.com/data/

今天:

  IE9  5.94%

  IE8 21.19%

  IE7 4.79%

  IE6 4.11%

 

    





2.8 并集选择器

  使用语法:

    多个标签以逗号隔开 如  p,h1,span

具体代码:

    <style type="text/css">
        h3,p {
            color: red;
        }
    </style>

上述代码意思是将h3和p标签都变成红色。

 

 

2.9 儿子选择器

  使用语法:

    如 div > p

    代表 p是div的儿子标签,并不是实际上的大于

  儿子选择器 ie7开始兼容,ie7以下的浏览器都不兼容,

  儿子选择器必须遵循父辈关系,关系不对应是不起作用的,看如下层级关系:

  div

     ul

        li

          p

        

  如果我想将span变成红色 那么请问  div > p 这样的夸父辈关系能行吗?

  毫无疑问是不行的,必须不能脱离父辈之间的关系,此时可以这样 div  ul li>p 又或者 是 div >ul>li >p

  

  

具体代码:

    <style type="text/css">
        div > p {
            color: red;
        }
    </style>

 

 

3.0 序选择器

  使用语法:

     ul li:first-child  意思是ul下的第一个

     ul li:last-child 意思是选中最后一个

     ul li:nth-child(4) 意思是选中第四个li

               ul li:nth-child(2n+2) 意思是选中所有偶数li

  注意序选择器,ie8开始兼容,ie8以下的都不兼容,

  如果考虑到还是需要兼容ie6,7 可以自行写类名 如选中第一个和选中最后一个:

  class='first'

  class='last'

  

    

 

 

具体代码:

<style type="text/css">
        ul li:first-child {/*选中第一个li*/
            color: red;
        }
             ul li:last-child {/*选中最后一个li*/
            color: red;
        }
    
      ul li:nth-child(4) {/*选中第一个4个li*/
            color: red;
        }
     ul li:nth-child(2n+2) {/*选中偶数个li*/
            color: red;
        }   
 </style>

 

 

 

3.1 下一个兄弟选择器

  使用语法:

      如h3+p  意思是h3下第一个p元素

   注意:ie7以下都不兼容

具体代码:

<style type="text/css">
        h3+p{/*h3下的第一个p元素变红色*/
            color:red;
        }
</style>

 

 

4.0 继承性

  如下案例div下有p,但只给div选择了颜色,但却p标签随之变色,这是什么回事呢?looking 下图,

  但有些属性是可以继承的,有些是不可以的。

 

那么有哪些属性是可以继承的?

color、text-开头的、line-开头的、font-开头的

这些关于文字样式的,都能够继承;所有关于盒子的、定位的、布局的属性都不能继承。

 

 

 

所以假如,页面的文字,都是灰色,都是14px。那么我们可以利用继承性:

body{
        color:gray;
        font-size:14px;4    
        }       

 继承性是从自己开始,直到最小的元素。

 

 

 

4.1 层叠性

很多公司如果要笔试,那么一定会考层叠性。

 

层叠性:就是css处理冲突的能力。 所有的权重计算,没有任何兼容问题!

CSS像艺术家一样优雅,像工程师一样严谨。

 

 

 

 

 

当选择器,选择上了某个元素的时候,那么要这么统计权重:

id数量,类的数量,标签的数量

优先权重 是 id > 类 >标签

 

 

 

 

不进位,实际上能进位(奇淫知识点:255个标签,等于1个类名)但是没有实战意义!

 

 

 

如果权重一样,那么以后出现的为准:

 

同一个标签,携带多个类名会有冲突

 

 

 

 

 

 

 

结果会是红色的,因为CSS中的red在后面

 

 

4.2 权重问题深入

 

!important 标记

important 是英语里面的 ”重要的“ 意思 。 通过语法:

k:v !important;

来给一个属性提高权重,这个属性权重无穷大。

主要使用语法:

  正确的

    font-size:60px !important;

  错误的

    font-size:60px; !important; 不能把!important 写在外面

    font-size:60px important  没有感叹号

 

 

 1 ) !important 提升的是一个属性,而不是一个选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        p {
            color: red !important; #只写了这个 !important,所以字体颜色属性提升权重
            font-size: 100px; #这条属性没有写 !important,所以没有提升权重
        }
        #para1 {
            color: blue;
            font-size: 50px;
        }
        .spec {
            color: green;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <p id="para1" class="spec">文字</p>
</body>
</html>

 

所以综合来看,字体是red(听important的); 字号是50px (听id的);

 

 

  2 ) !important 无法提升继承的权重,该是0还是0如下案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        div {
            color:red !important;

        }
        p {
            color: blue;
        }
    </style>
</head>
<body>
<div>
    <p>哈哈哈哈哈哈</p>
</div>
</body>
</html>

 

 

 

由于div是通过继承性来影响文字颜色的,所以!important无法提升它的权重,权重依然是0

干不过p标签,因为p标签是实实在在选中了,所以字是蓝色的(以p为准)。

 

 

 

 

posted @ 2018-10-06 03:05  David-Wen  阅读(241)  评论(0编辑  收藏  举报