zoukankan      html  css  js  c++  java
  • 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为准)。

     

  • 相关阅读:
    Python补充06 Python之道
    java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)
    java io系列01之 "目录"
    字符编码(ASCII,Unicode和UTF-8) 和 大小端
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(7) TimeZone
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(6) Locale
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(5) SimpleDateFormat
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(4) DateFormat
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(3) Date
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(2) 自己封装的Calendar接口
  • 原文地址:https://www.cnblogs.com/david-wen/p/9746503.html
Copyright © 2011-2022 走看看