CSS3+HTML5

Chapter 1 CSS、HTML基础知识

浏览器属性前缀问题

-webkitwebkit核心浏览器 Chrome、Safari
-mozFirefox
-msIE
-o

Opera

 eg:

.transform{
  -webkit-transform:rotate(-3deg);  //带有Chrome、Safari浏览器属性
  -moz-transform:rotate(-3deg);     //带有Firefox浏览器属性
  -ms-transform:rotate(-3deg);      //带有IE浏览器属性
  -o-transform:rotate(-3deg);       //带有Opera浏览器属性
  //标准属性放在最后书写
  transform:rotate(-3deg);          //标准属性
}

float浮动

none默认值,不浮动
inherit继承父元素的float值(不建议使用,IE不支持)
left向页面左侧浮动
right向页面右侧浮动

1、对于块级元素来说,如果不设置浮动其默认的宽度是100%。此时设置浮动则其宽度随文字长度变化。

2、默认情况下父元素高度会随着子元素内容进行调整,但是将子元素设置为浮动后,父元素高度为0。

子元素无浮动container大小为513*374

子元素浮动container大小为513*0

 3、浮动的元素脱离了文档流,但元素中的内容依旧占据空间。


clear清除浮动

left

左侧不允许出现浮动元素
right右侧不允许出现浮动元素
both清除两侧浮动中对自己影响最大的那一侧浮动

1、在需要的地方添加clear:both标签。

2、对父元素使用:after伪类。

<body>
    <div class="div1 clearfix">
        <div class="left">Left</div>
        <div class="right">Right</div>
    </div>
    <style>
       .clearfix:after{
           content: "020";
           display: block;
           height: 0;       /*此时clearfix的高度为0*/
           clear: both;     /*清除父元素clearfix的浮动,clearfix的高度不为0了*/
       }
       .clearfix{
           zoom: 1;
       }
       .left{
           float: left;
       }
       .right{
           float: right;
       }
    </style>
</body>

position定位

static默认值

relative

相对位置
absolute

绝对位置

fixed相对于浏览器窗口的定位
inherit继承父元素的定位属性

1、relative和static都是相对于其他元素进行定位的,都属于相对定位的范畴。

2、如果使用static默认值,则在CSS中为元素定义top、left、right、bottom、z-index都无效。也就是说想要设值元素的top、left、right、bottom、z-index值必须用position属性(static除外)。

3、absolute是相对于上一个不为static的父元素进行绝对定位的,否则将相对html进行绝对定位。

3、absolute和fixed时,未定义宽度的元素不再是100%,根据内容自动调整;不定义z-index时,absolute元素会覆盖在其他元素之上;会脱离正常的文档流,不占据空间,类似于浮动后的效果。

<body>
    <div class="container">
        <div class="absolute">绝对定位</div>
    </div>
    <style>
      .container{
          margin: auto;
          width: 960px;
          height: 300px;
          position: relative;       /*如果没有这句 则子元素是按照整个html进行定位*/
      }

      .absolute{
          position: absolute;
          top: 0;
          left: 0;

      }
    </style>
</body>
父元素无position时

父元素position为relative时

 4、fixed是相对于浏览器窗口的定位,即无论页面如何滚动,该元素始终停留在屏幕上某个位置。

Chapter 2 选择器

选择器包括基础选择器伪类选择器

基础选择器:标签选择器、类选择器(class选择器)、id选择器、通配符选择器、子元素选择器、后代元素选择器、相邻元素选择器、属性选择器、组选择器、复合选择器。

伪类选择器:结构化伪类、目标伪类(target)、状态伪类、否定伪类(not(S))。

1、基础选择器

  • 标签选择器:定义全局样式。
<body>
    <h1>AAAAAAAAAAAAAAAAAAAAAAAAAAAAA</h1>
    <h2>BBBBBBBBBBBBBBBBBBBBBBBBBBBBB</h2>
    <h3>CCCCCCCCCCCCCCCCCCCCCCCCCCCCC</h3>
    <h4>DDDDDDDDDDDDDDDDDDDDDDDDDDDDD</h4>
    <h5>EEEEEEEEEEEEEEEEEEEEEEEEEEEEE</h5>
    <h6>啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊</h6>
    <style>
      h1,h2,h3,h4,h5,h6{
          margin: 10px 0;
          font-family: inherit;
          font-weight: bold;
          line-height: 20px;
          color: blueviolet;
          text-rendering: optimizeLegibility;
      }
      h1,h2,h3{
          line-height: 40px;
      }
      h1{font-size: 38.5px;}
      h2{font-size: 31.5px;}
      h3{font-size: 24.5px;}
      h4{font-size: 17.5px;}
      h5{font-size: 14px;}
      h6{font-size: 11.5px;}
    </style>
</body>

  • 类选择器(class选择器)

语法: 在class名称前加 . 符号

类选择器是最灵活、应用最广泛的选择器。

  • id选择器

语法:在id名称前面加 # 符号

一个HTML元素只能对应一个id,故灵活性不如class选择器。

id选择器拥有最高的权重,可以用于覆盖之前的一些定义。

和后台数据对应,从而配合JavaScript进行一些逻辑操作。

  • 通配符选择器

通配符是指用一个符号代替某些字符。语法关键词是 。该选择器以 * 开始,可以与任意元素匹配。

通配符选择器的权重最低,只要求其他的定义,通配符选择器的定义就会被覆盖。

  • 子元素选择器

用于严格的父子关系。语法为 > 符号

<body>
    <li><a href="#">www.baidu.com</a></li>
    <li><div><a href="#">www.baidu.com</a></div></li>
    <style>
      li>a{
          color: yellowgreen;
      }
    </style>
</body>

 

  • 后代元素选择器

后代选择器类似于子元素选择器,要求没有那么严格,只要是父元素的后代元素即可。

语法关键词是空格。

<body>
    <li><a href="#">www.baidu.com</a></li>
    <li><div><a href="#">www.baidu.com</a></div></li>
    <style>
      li a{
          color: yellowgreen;
      }
    </style>
</body>

  • 相邻元素选择器

用于选取和某个元素相邻的同级元素。要求二者必须拥有同一个父元素且二者相邻。

语法关键词为 + 符号。

  • 属性选择器

有些标签可以添加属性,例如title、href、name等。语法关键词是 [ ] 符号。

属性选择器可以链式调用,从而缩小选择范围。

[title]{
    color:red;
}

a[href][title]{
    color:red;
}

a[href="www.baidu.com"][title="百度"]{
    color:red;
}

还可以使用通配符进行模糊匹配。

a[src^="https"]   /*选择其src属性值以"https"开头的每个<a>元素*/
a[src$=".pdf"]   /*选择其src属性以".pdf"结尾的每个<a>元素*/
a[src*="abc"]   /*选择其src属性中包含"abc"子串的每个<a>元素*/

  • 组选择器

语法关键词是 , 符号。组选择器相当于一种并集,或者常说的“或”的关系。

h1,h2,h3,h4,h5,h6{
    font-weight:bold;
}
  • 复合选择器

语法关键词是 . 符号,注意符号前不能有空格符,否则会被识别为后代选择器。

复合选择器可以说是“与”的关系。

应用复合选择器的时候,标签选择器要写在最前面,否则无法识别。

<body>
    <p class="test">hehe</p>
    <div>hehe</div>
    <div class="test">hehe</div>
    <p>hehe</p>

    <style>
      p.test{        /*表示同时满足p元素和class="test"两个条件*/
          color: red;
      }
      div.test{        /*表示同时满足div元素和class="test"两个条件*/
          color: blue;
      }

    </style>
</body>

 

2、伪类选择器

伪类表示元素的状态:排序、鼠标是否悬停、是否已被访问过、光标是否指向等。

也就是说使用伪类选择器可以得知有鼠标悬停的元素、父元素下的第n个子元素、已被访问过的链接等使用基本选择器无法进行区分的元素

  • 结构化伪类

可以根据文档结构来选取元素。

基础样例:

<body>
    <ul class="test">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
    </ul>
    <div>
        <ul class="test_one">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
        </ul>
    </div>

    <style>
      ul>li{
          display: inline-block;
          height: 24px;
          line-height: 24px;
          width: 24px;
          font-size: 15px;
          text-align: center;
          background-color: rgb(226, 129, 129);
          border-radius: 4px;
          margin: 5px;
      }
    </style>
</body>

以下皆以此样例为基础。

1.        :nth-child(n)

n表示一个简单的表达式,可以使大于等于0的整数。

li:nth-child(2){        /*表示取某父元素下<li>元素的第二个*/
          background-color: #333;
          color: white;
      }

n不仅仅指定某个特定值,譬如:

li:nth-child(n){        /*n相当于全选*/
          background-color: #333;
          color: white;
      }

另外,括号内为2n则表示所有偶数项3n则表示3、6、9、...项2n+1表示奇数项n+5表示从第五个元素开始进行全选

2.        :nth-last-child(n)

 :nth-child(n)选择器获取元素的顺序相反,从最后一个元素开始计算。

3.        :nth-of-type(n)

例如 li:nth-of-type(3) 表示第三个<li>元素,对所查询元素的类型有所约束。

如果前面不加类型,例如 :nth-of-type(1) 表示自动选择所有并列元素的第n个。

:nth-of-type(2){
          background: red;
      }

        该表达式则表示将每一层的第2个元素背景设置为红色。第一层为body层,无第二个元素;第二层为ul层和div层,无第二个元素;第三层为li层,有第二个元素设置为红色。

4.        :nth-last-of-type(n)

  :nth-of-type(n)选择器获取元素的顺序相反,从最后一个元素开始计算。

5.        :first-child

表示选择元素的第一个元素。

6.        :last-child

表示选择的是元素的最后一个子元素。

7.        :first-of-type

相当于:nth-of-type(1)

8.        :last-of-type

相当于:nth-last-of-type(1)

9.        :only-child

限定某父元素只有一个子元素,该选择器才会生效。

10.        :only-of-type

基本同 :only-child ,区别在于如果不指定type,该语句会对body生效。

11.        :root

表示选择文档的根元素。对于HTML文档来说,根元素永远是<html>标签。因此以下两种写法效果一致。

:root{
          background: black;
      }

html{
          background: blue;
      }

12.        :empty

表示选择没有任何内容的元素。

例如:有三个p标签,其中一个没有任何内容明确占据空间,想让没有内容的段落也不占据空间则可以用此语句定义。

<body>
    <p>aaaaaaaaaaa</p>
    <p></p>
    <p>ccccccccccc</p>

    <style>
      p:empty{
          display: none;
      }
    </style>
</body>

  • 目标伪类:target

用于选取当前活动的目标元素。

<body>
    <a href="#a1">跳转至内容1</a>
    <a href="#a2">跳转至内容2</a>
    <p id="a1"><b>内容1</b></p>
    <p id="a2"><b>内容2</b></p>

    <style>
      :target{
          border: 2px solid #d4d4d4;
          background-color: #e5eecc;
      }
    </style>
</body>

  •  状态伪类

1.        :enable 和 :disabled

前者用于选择所有可用的元素,后者用于选择所有已被禁用的元素。

不建议使用,可以采用属性选择器来代替:

/*将被禁用的input元素设置为透明*/
input:disabled{
          opacity: 0;
      }
input[disabled]{
          opacity: 0;
      }

两者效果一致。

2.        :checked

用于选择所有被选中的checkbox或者radio标签。

input:checked{
          opacity: 0;
      }
input[checked]{
          opacity: 0;
      }

3.        :indeterminate 和 :default

前者用于指定当页面打开时,某组中的单选框或复选框元素还没有选取状态时的样式。

后者用于指定当前元素处于非选取状态的单选框或复选框的样式。

这两个选择器只有Opera浏览器支持,不建议使用。

  • 否定伪类 :not(S)

该伪类使用使得我们在针对某些特例进行排除时更为方便。

:not(selector) 选择器匹配非指定元素、选择器的每个元素。

:not(p){      /*表示将除了<p>标签以外的所有HTML元素的背景颜色设置为红色*/
          background-color: red;
      }

可以配合其他选择器一起使用。

div :not(.test){      /*表示将在div标签的子元素中,class不为text的所有元素背景设置为红色*/
          background-color: red;
      }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值