CSS

2019-07-28  本文已影响0人  茶还是咖啡

CSS基本语法及页面引用

CSS基本语法

css定义的方法是:
选择器{属性:值;属性:值;}
选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性都有一个或多个值。
示例:

div {width:100px;height:100px;color:red}

css 页面引入的方法

  1. 外联式;通过link标签,链接到外部样式表到页面中。
<link rel="stylesheet" type="text/css" href="css/main.css"
  1. 嵌入式;通过style标签,在网页上嵌入的样式表。
<style type="text/css">
     div{width:100px;height:100px;color:red}
<style>
  1. 内联式(行间样式);通过标签的style属性,在标签上直接写样式。
<div style="width:100px;height:100px;color=red"></div>

CSS 文本设置

常用的应用文本的css样式

颜色表示法

css颜色值主要有三种表示方法:

  1. 颜色名表示:red红色,gold金色
  2. rgb表示:rgb(255,0,0)表示红色
  3. 16进制表示,#ff0000表示红色,这种可以简写成#f00

CSS 选择器

常用的选择器有以下几种:

  1. 标签选择器
    标签选择器,此种选择器的影响范围最大,尽量应用在层级选择器中
  <style>
    *{margin:0;padding:0}
    div{color:red}
  </style>
<!--对应以上两条样式-->
  <div>...</div>
<!--对应以上两条样式-->
<div class="box">...</div>
  1. id选择器
    通过id来选择元素,元素的ID名称不能重复,所以一个样式设置项只能对应于页面上一个元素,不能复用,id一般给程序使用,所以不推荐id作为选择器
#box{color:red}
<!--对应以上一条样式,其他元素不允许使用该样式-->
<div id="box">...</div>
  1. 类选择器
    通过类名来选择元素,一个类可以应用于多个元素,一个元素也可以使用多个类,应用灵活,可以复用,是css中应用最多的一种选择器
<style>
    .red{color:red}
    .big{font-size:20px}
    .mt10{margin-top:10px}
</style>
<div class="red">...</div>
<h1 class="red mt10 big">hello</h1>
<p class="red mt10">hello</p>
  1. 层级选择器
    主要应用选择父元素的子元素,或者子元素下面的子元素,可以与标签元素结合使用,减少命名,同时也可以通过层级,防止命名冲突
  <style>
    .box span{color:red}
    .box .red{color:pink}
    .red{color:blue}
  </style>
<div class="box">
  <span>...</span>
  <a href="#" class="red">...</a>
</div>
  1. 伪元素选择器
    常用的伪元素选择器有hover,表示鼠标悬浮在元素上时的状态,伪元素选择器有before和after,他们可以通过样式在元素中插入内容。
<style>
    .box1:hover{color:red}
    .box2:before{content:'行首文字'}
    .box3:after{content:'行尾文字'}
</style>
<div class='box1'>...</div>
<div class='box2'>...</div>
<div class='box3'>...</div>

CSS盒子模型

元素在页面中显示成一个方块,类似一个盒子,CSS盒子模型就是使用现实生活中盒子来做比喻,帮助我们设置元素对应的样式,如下:


image.png

把元素叫做盒子,设置的样式分别为:盒子的边框(border),盒子内的内容和边框之间的间距(padding),盒子与盒子之间的间距(margin)

  1. 开发中,如果left,right,top,buttom属性相同,我们不用每次都写xxx-top=bala... xxx-right=bala...
    我们可以直接进行简写:
  <style type="text/css">
    .box{
      /*分别设置:上(20px)左右(100px)下(200px)*/
      padding: 10px 100px 200px;

      /*分别设置:上下(20px)左右(100px)的值*/
      padding: 20px 100px;
      
      /*分别设置:上下左右:(20px)*/
      padding: 20px;
    }
  </style>

margin相关技巧

  1. 设置元素水平居中:margin: x auto
  2. margin负值让元素位移以及边框合并
外边距合并

外边距合并是指:当两个垂直外边距相距时,他们将形成一个外边距,合并后的外边距的高度等于两个发生合并的外边距的高度的较大者。解决方法如下:

  1. 使用这种特性
  2. 设置一边的边距,一般设置margin-top
  3. 将元素浮动或者定位
margin-top塌陷

在两个盒子嵌套的时候,内部的盒子设置的margin-top会加到外边的盒子上,导致内部的盒子margin-top设置失败,解决办法如下:

  1. 外部盒子设置一个边框
  2. 外部盒子设置overflow:hidden
  3. 使用伪元素
<sytle>
    .clearfix:before{
        content:' ';
        display: table
    }
</style>

盒子的真实尺寸

盒子的宽度:width+左右的padding+左右的border
盒子的高度:height+上下的padding+上下的border

width其实代表的是盒子内容的尺寸,并不是盒子本身的尺寸。
需求:
布局下面的标题:

image.png
实现方式1:
<style type="text/css">
    .box{
      width: 385px;
      height: 35px;
      font: 20px "微软雅黑";
      line-height: 20px;
      padding-top: 15px;
      padding-left: 15px;
      border-top: 1px solid #f00;
      border-bottom: 3px solid #666;
    }
  </style>
 <div class="box">新闻标题</div>

注意
微软雅黑字体自带大小,如果不指定line-height会导致布局异常。
实线方式2:
使用text-indent进行首行缩进,不会影响width的长度,设置line-hight=height文字自动居中。

  <style type="text/css">
    .box2{
      width:400px;
      height: 50px;
      font: 20px "微软雅黑";
      border-top: 1px solid #f00;
      border-bottom: 3px solid #666;
      text-indent: 15px;
      line-height: 50px;
    }
  </style>
  <div class="box2">新闻标题</div>

CSS元素溢出

当子元素的尺寸超过父元素时,需要设置父元素显示溢出子元素的方式,设置方法是通过overflow属性来设置。
overflow的设置项:

  1. visable默认值。内容不会被修剪,会呈现在元素框之外。
  2. hidden内容会被修剪,并且其余内容是不可见的,此属性还有清除浮动,清除margin-top塌陷的功能。
  3. scroll内容会被修剪,但是浏览器会显示滚动条一边查看其余的内容
  4. auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
  5. inherit规定应该从父元素继承overflow属性的值。

块元素、内联元素、内联块元素

块元素
块元素,也可以称为行元素,布局中常用的标签有:div,p,ul,li,h1~h6,dl,dt,dd等等都是块元素。他在布局中的行为:

内联元素

内联元素,也可以称之为行内元素,布局中常用的标签如:a、span、em、b、strong、i等等都是内联元素,他们在布局中的行为:

解决内联元素间隙的问题

  1. 去掉内联元素之间的换行
  2. 将内联元素的父级设置font-size为0,再设置自身font-size
内联块元素

内联块元素,也叫行内元素,是新增的元素类型,现有元素没有归于此类别的,img和input元素的行为类似这种元素,但是也归类于内联元素,我们可以用display属性将块元素或者内联元素转换为这种元素,他们在布局中的表现的行为:

display属性

display属性是用来设置元素的类型以及隐藏的,常用的属性有:

  1. none元素隐藏且不占位置
  2. block元素以块元素显示
  3. inline元素以内联元素显示
  4. inline-block元素以内联块元素显示
    需求:


    image.png
  <style type="text/css">
    .menu{
      width: 694px;
      height: 50px;
      margin: 50px auto 0;
      list-style: none;
      padding: 0;
      font-size: 0;
    }
    .menu li{
      display: inline-block;
      width: 98px;
      height: 48px;
      border: 1px solid gold;
      font-size: 16px;
      margin-right: -1px;
      text-align: center;
      line-height: 48px;
    }
    .menu a{
      font-family: 'Microsoft Yahei';
      color: #25a4bb;
      text-decoration: none;
    }
    .menu li:hover{
      background-color: blanchedalmond;
    }
    .menu a:hover{
      color: red;
    }
  </style>
<body>
  <ul class="menu">
    <li><a href="#">首页</a></li>
    <li><a href="#">公司简介</a></li>
    <li><a href="#">联系我们</a></li>
    <li><a href="#">联系我们</a></li>
    <li><a href="#">联系我们</a></li>
    <li><a href="#">联系我们</a></li>
    <li><a href="#">联系我们</a></li>
  </ul>
</body>
image.png

浮动

文档流

文档流是指盒子按照html标签编写的顺序依次从上到下,从左到右,块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子占据自己的位置。

浮动特性

  1. 浮动元素有左浮动(float:left)和右浮动(float:right)两种
  2. 浮动元素会向左或者向右浮动,碰到父元素边界,浮动元素,未浮动的元素才停下来
  3. 相邻浮动的块元素可以并在一行,超出父级宽度就换行
  4. 浮动让行内元素或者块元素自动转换为行内块元素
  5. 浮动元素后面没有浮动的元素会占据浮动元素的位置,没有浮动元素的内的文字会避开浮动的元素,形成文字饶图的效果
  6. 父元素内整体浮动的元素无法撑开父元素,需要清除浮动
  7. 浮动元素之间没有垂直margin的合并

清除浮动

<style>
    /*清除浮动和解决margin塌陷*/
    .clearfix:after,.clearfix:before{
      content:"";
      display: table;
    }
    .clearfix:after{
      clear:both;
    }
    /*兼容IE*/
    .clearfix{
      zoom: 1;
    }
</style>

定位

使用position属性来设置元素的定位类型,position的设置如下:

元素定位特征

绝对定位和固定定位的块元素和行内元素会自动转换为行内块元素

定位元素层级

定位元素是浮动的正常的文档流之上的,可以用z-index属性来设置元素的层级

典型定位布局

  1. 固定在顶部的菜单
  2. 水平垂直居中弹框
  3. 固定在侧边的工具栏
  4. 固定在底部的按钮
    案例1:
    布局上面的导航栏


    image.png
    <style type="text/css">
      .menu{
        /*去掉小点*/
        list-style: none;
        background-color: #55a8ea;
        padding: 0;
        width: 960px;
        height: 40px;
        margin: 50px auto 0;
        position: relative;
      }

      .menu li{
        float: left;
        height: 40px;
        width: 100px;
        text-align: center;
      }

      .menu li a{
        /*font-size: 14px;*/
        /*font-family: "Microsoft Yahei";*/
        /*color: #ffffff;*/
        font: 14px/40px 'Microsoft Yahei';
        color: #ffffff;
        text-decoration: none;
      }
      .menu .active{
        background-color: #00619f;
      }
      .menu li:hover{
        background-color: #00619f;
      }
      .menu .new{
        width: 33px;
        height: 20px;
        background:url("./new.png") no-repeat;
        background-size: 100%;
        position: absolute;
        left: 368px;
      }
      .menu .new:hover{
        background:url("./new.png") no-repeat;
        background-size: 100%;
      }

    </style>
<body>
  <ul class="menu">
    <li class="active"><a href="#">首页</a></li>
    <li><a href="#">网站建设</a></li>
    <li><a href="#">首页</a></li>
    <li><a href="#">首页</a></li>
    <li><a href="#">首页</a></li>
    <li><a href="#">首页</a></li>
    <li class="new"></li>
  </ul>
</body>

案例2:


image.png
  <style type="text/css">
    .news_list_con{
      width: 600px;
      height: 290px;
      border: 1px solid #ddd;
      margin: 50px auto 0;
    }
    .news_list_con h3{
      width: 560px;
      height: 50px;
      border-bottom: 1px solid #ddd;
      margin: 0 auto;
    }
    .news_list_con h3 span{
      display: inline-block;
      height: 50px;
      border-bottom: 2px solid red;
      font: 18px/50px 'Microsoft Yahei';
      padding: 0 15px;
      position: relative;
    }
    .news_list_con ul{
      list-style: none;
      padding: 0;
      width: 560px;
      height: 238px;
      margin: 0 auto;
    }
    .news_list_con ul li{
      height: 39px;
      border-bottom: 1px solid #ddd;
    }
    .news_list_con ul a{
      float: left;
      height: 38px;
      font: 14px/38px 'Microsoft Yahei';
      text-decoration: none;
    }
    .news_list_con ul span{
      float: right;
      height: 38px;
      font: 14px/38px 'Microsoft Yahei';
    }
    .news_list_con ul a:hover{
      color: red;
    }
    .news_list_con ul a:before{
      content: ". ";
    }

  </style>
  <div class="news_list_con">
    <h3><span>新闻列表</span></h3>
    <ul>
      <li>
        <a href="#">点我点我点我~</a>
        <span>2019-07-28</span>
      </li>
      <li>
        <a href="#">点我点我点我~</a>
        <span>2019-07-28</span>
      </li>
      <li>
        <a href="#">点我点我点我~</a>
        <span>2019-07-28</span>
      </li>
      <li>
        <a href="#">点我点我点我~</a>
        <span>2019-07-28</span>
      </li>
      <li>
        <a href="#">点我点我点我~</a>
        <span>2019-07-28</span>
      </li>
      <li>
        <a href="#">点我点我点我~</a>
        <span>2019-07-28</span>
      </li>
    </ul>
  </div>

background

他负责给盒子设置背景图片和背景颜色,backgruond是一个复合属性,他可以分解为:

    <style type="text/css">
      .pagenation{
        width: 958px;
        height: 40px;
        border: 1px solid #000;
        margin: 50px auto 0;
        font-size: 0px;
        text-align: center;
      }
      .pagenation a{
        padding: 5px 10px;
        display: inline-block;
        height: 18px;
        text-decoration: none;
        background-color: gold;
        line-height: 18px;
        font-size: 12px;
        font-family: "Microsoft Yahei";
        margin: 8px 5px;
      }
      .pagenation span{
        display: inline-block;
        font-size: 12px;
      }
      .pagenation a:hover{
        background-color: #55a8ea;
      }
    </style>
<body>
  <div class="pagenation">
    <a href="#">上一页</a>
    <a href="#">1</a>
    <a href="#">2</a>
    <a href="#">3</a>
    <a href="#">4</a>
    <span>...</span>
    <a href="#">5</a>
    <a href="#">6</a>
    <a href="#">7</a>
    <a href="#">8</a>
    <a href="#">下一页</a>
  </div>
</body>
上一篇下一篇

猜你喜欢

热点阅读