CSS基本学习

CSS

  • Cascading Style Sheet 层叠级联样式表

发展史

  • CSS1.0
  • CSS2.0 DIV(块)+CSS,HTML与CSS机构分离思想,SEO
  • CSS2.1 浮动、定位的出现
  • CSS3.0 圆角、阴影、动画效果

补充:SEO

  • SEO(Search Engine Optimization):汉译为搜索引擎优化。是一种方式:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。目的是让其在行业内占据领先地位,获得品牌收益。很大程度上是网站经营者的一种商业行为,将自己或自己公司的排名前移。

CSS的四种导入方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

<!--    3.内部样式-->
    <style>
        h1{
            color: chartreuse;
        }
    </style>


<!--    2.外部样式-->
    <!--    链接式-->
    <link rel="stylesheet" href="../css/h1_style.css">
    <!--    导入式-->
    <style>
        @import url("../css/h1_style.css");
    </style>

</head>
<body>
<!--1.行内样式-->
  <h1 style="color: aliceblue">测试css</h1>
</body>
</html>

h1_style.css

/*
语法:

选择器{
    申明1;
    申明2;
    申明3;
}

*/
h1{
    color: blue;
}
  • 样式使用优先级:就近原则

link导入方式与import方式

import方式是css2.0的产物,import导入的时候,他会等待html页面加载完才开始渲染,这一点与link方式甩

CSS优势

  1. 内容和表现分离
  2. 网页结构表现统一,可以复用
  3. 样式丰富
  4. 李荣SEO,容易被搜素引擎收录

选择器

  • 作用:选择页面上某一个或者一类元素

基本选择器

  • 标签选择器:选择一类标签 标签名{}
  • 类 选择器 :选择所有class属性一致的标签,可以跨标签 .类名{}
  • id选择器 :全局只有一个id #id名称{}
  • 优先级:id选择器>类选择器>标签选择器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>


    <style>
<!--        标签选择器-->
    h1{
    color: chartreuse;
    }
    </style>


    <style>
<!--        类选择器-->
    .hh{
    color: aqua;
    }
    </style>

    <style>
<!--        id 选择器-->
    #hhh{
    color: blue;
    }
    </style>
</head>
<body>
    <h1>标签选择器</h1>
    <h2 class="hh">类选择器</h2>
    <h3 id="hhh">id选择器</h3>
</body>
</html>

层次选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    /*后代选择器 某个元素 下一级,下下级... 所有选择元素*/
    body p{
        color: darkred;
    }

    /*子选择器  某个元素 某个元素 下一级所有的元素*/
    body>p{
        background: blue;
    }

    /*相邻兄弟选择器  当前选中元素的同级 向下 一个兄弟元素*/
    .active + p{
        background: chartreuse;
    }

    /*通用兄弟选择器,当前选中元素的同级 向下 所有兄弟元素*/
    .active~p{
        background: red;
    }
    </style>
</head>
<body>
    <p>1</p>
    <p class="active">2</p>
    <p>3</p>
    <ul>
        <li>
            <p>4</p>
        </li>
        <li>
            <p>5</p>
        </li>
        <li>
            <p>6</p>
        </li>
    </ul>
    <p>7</p>
</body>
</html>

结构伪类选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    /*ul 的第一个*/
    ul li:first-child{
      background: chartreuse;
    }
/*ul 的最后一个*/
    ul li:last-child{
      background: blue;
    }

  /* 选择当前元素的父级元素 ,选中父级元素下的第一个元素,并且当前元素是该元素才生效   是按照顺序 */
    p:nth-child(1){
      background: darkred;
    }

  /*  选中 当前元素的父级元素 选中父级元素下的第三个元素,并且当前元素是该元素才生效   是按照类型*/
    p:nth-of-type(3){
      background: black;
    }
  </style>
</head>
<body>
<!--  <a>不是p元素不生效</a>-->
  <p>p1</p>
  <p>p2</p>
  <a>a</a>
  <p>p3</p>
  <ul>
    <li>p4</li>
    <li>p5</li>
    <li>p6</li>
  </ul>
</body>
</html>

属性选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        .test a{
            height: 50px;
            width: 50px;
            background: blueviolet;/*背景元素*/
            display: block;/*块级元素*/
            float: left;/*浮动   加了块级元素之后,竖着排列,但是加了浮动又在一列了*/
            margin-right: 5px;/*外边距 块之间的距离*/
            font: bold 20px/50px Arial;/*(bold 加粗字体) (20px 设置字体大小)  (50px  设置行高,如果字体行高与框高一致,呈现居中效果)  (Arial 字体样式)*/
            text-align: center;/*文字居中*/
            color: azure;/*文字颜色*/
            text-decoration: none;/*去除文字下划线*/
            /*border-radius : 上下左右 四个值*/
            border-radius: 25px;/*25px设置为圆形   10px 就是圆角*/
        }

    /*  存在id属性的a标签元素  */
        a[id]{
            background: azure;
        }

    /*  id=u2 的a标签素  */
        a[id=u2]{
            background:yellow;
        }

    /*    class 中有t1 s1的a标签元素*/
        a[class*="t1 s1"]{
            background:darkred ;
        }
    /*    class 中 只有 t1 s1 的a标签元素*/
        a[class="t1 s1"]{
            background: aqua;
        }

    /*    href中以http开头的 a标签元素*/
        a[href^=http]{
            background: aliceblue;
        }

        /*    href中以png结尾的 a标签元素*/
        a[href$=png]{
            background: aliceblue;
        }


    </style>
</head>
<body>
    <p class="test">
        <a href="http://www.baidu.com" class="t1 s1 c1" id="u1">1</a>
        <a href="http://www.baidu.com" class="t1 s1" id="u2">1</a>
        <a href="" class="t1 v1">2</a>
        <a href="images/123.jpg" class="t2 v2">3</a>
        <a href="images/123.jpg" class="t2 v2">4</a>
        <a href="images/123.png" class="t2 v2">5</a>
        <a href="images/123.jpg" class="t2 v2">6</a>
    </p>
</body>
</html>

美化网页作用

  1. 有效传递页面信息
  2. 吸引用户
  3. 凸显主题
  4. 提高用户体验
  • < span>< span/> 行内元素,重点突出的 用span套起来
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a>标签</a>
<a>标签</a>
<span>突出</span>
<span>突出</span>
<a>标签</a>
<a>标签</a>
</body>
</html>

样式

字体样式

<style>
        a{
            /*复合写法*/
            font: bold 20px/50px Arial;/*(bold 加粗字体) (20px 设置字体大小)  (50px  设置行高,如果字体行高与框高一致,呈现居中效果)  (Arial 字体样式)*/
            
            /*分开写法*/
            font-family: 新宋体;/*字体*/
            font-size: 50px;/*字体大小*/
            font-weight: bold;/*字体粗细*/
            color: aqua;/*字体颜色*/
        }
    </style>

文本样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /*
        color:
        1.单词形式 red
        2.RGB #0~F
        3.RGBA rgba(0,0,1,0.5) A是透明度的意思
         */
        h1{
            color: rgba(1,0,0,0.2);
        }

    /*
    text-indent: 表示首行缩进
    em : 缩进的文字长度
    */
        .p1{
            text-indent: 2em;
        }
        
        .p2{
            text-decoration: underline;/*下划线*/
            text-decoration: line-through;/*中划线*/
            text-decoration: overline;/*上划线*/
            text-decoration: none;/*去划线*/
        }

        /*
        水平对齐  img是参照物,span是像img对齐
        */
        img,span{
            vertical-align: middle;
        }




    </style>
</head>
<body>
    <h1>颜色</h1>
    <p class="p1">20px是字体大小;50px是行高,相当于line-height 。 SimSun,'microsoft yahei',Verdana,Arial;是四种字体的名字20px是字体大小;50px是行高,相当于line-height 。 SimSun,'microsoft yahei',Verdana,Arial;是四种字体的名字20px是字体大小;50px是行高,相当于line-height 。 SimSun,'microsoft yahei',Verdana,Arial;是四种字体的名字 </p>
    <p class="p2">123</p>
    <p class="p3">
        <img src="" alt="" height="100px">
        <span>123</span>
    </p>
    <p class="p4>"123</p>
</body>
</html>

文本阴影、超链接伪类

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
    <style>
        /*鼠标悬停的状态*/
        a:hover{
            color: aqua;
        }
        /*鼠标按住的状态*/
        a:active{
            color: darkred;
            font-size: 100px;
        }

        /*text-shadow (阴影颜色 水平位移 垂直位移 阴影半径)*/
        #state{
            text-shadow: yellow 10px -10px 2px;
        }
    </style>

<body>
    <a id="state"> 状态</a>
</body>
</html>

列表样式、背景图片以及渐变

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /*渐变效果*/
        body{
            background: linear-gradient(19deg,#21D4FD 0%,#B7D3A7 100%);
        }
        
        /*list-style
        none:去掉原点
        circle 空心圆
        decimal 数字
        square 正方形
        */
        ul li{
            list-style: circle;
            background-image: ;
        }

        div{
         width: 100px;
        height: 50px;
         border: 1px solid red;/* 厚度 实线 红色*/
          background-image: url("");/*设置背景图片*/
            /*默认是平铺的*/
            background-repeat: no-repeat;/*不平铺,原始大小*/
            background-repeat: repeat-x;/*平铺,原始大小沿x轴平铺*/
            background-repeat: repeat-y;/*平铺,原始大小沿y轴平铺*/
            /*颜色 图片 图片位置  平铺方式*/
            background: darkred url("") 10px 10px no-repeat;

            /*图片定位*/
            background-position: 20px 30px ;


        }
    </style>
</head>
<body>

<!--导航栏一般就用这种方式来实现,而不选择使用nav标签-->
<div id="nav">
    <h2>测试</h2>
</div>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
</body>
</html>

盒子模型

  • 盒子大小:margin+padding+border+内容宽度
    在这里插入图片描述
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

    <style>
        /*元素一般总有一个默认的外边距 margin,所以设计的时候可以初始化*/
        body,div,a,span,h1{
            margin: 0;/*外边距*/
            padding: 0;/*内边距*/
        }

        #app{
            width: 300px;
            height: 300px;
            /*border 粗细 样式  颜色*/
            /*solid:实线 dashed 虚线*/
            border: 2px solid red;
            /*外边距设置为 0 auto 可以使页面居中*/
            /*前提  是块元素 块元素有固定高度*/
            margin: 0 auto;
        }
        
    </style>
<body>
    <div id="app">
        <h1>盒子模型</h1>
        <div>
            <div>
                用户名:<input type="text" name="name" value=""/>
            </div>
            <div>
                密码:<input type="password" name="password"/>
            </div>
        </div>
    </div>
</body>
</html>

盒子模型

box-shadow: 10px 10px 5px aqua;

display和浮动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        div{
            border:  2px solid red;
        }
        span{
            margin: 2px;
            background: #21D4FD;
            /*block : 块元素
            inline:行内元素
            inline-block 是块元素,但是可以内联
            */
            display: inline-block;

            /*浮动效果*/
            float: right;
            
            /*保持块级元素,但还是浮动效果
			both:两侧不允许浮动
			right:右侧不允许浮动
			left:左侧不允许浮动
			*/
            
            clear: both;

        }
    </style>
</head>
<body>
<div>
    <span>span2</span>
    <span>span3</span>
    <span>span4</span>
    <span>span5</span>
</div>
</body>
</html>

overflow及父级边框塌陷问题

  1. 浮动元素后面增加div:简单,但是不推荐
  2. 设置父元素高度:简单,治标不治本
  3. overflow 简单,下拉的一些场景避免使用
  4. 父类添加一个伪类:写法稍微复杂一点,但是没有副作用,推荐使用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        div{
            border:  2px solid red;
            /**
            1. 增加父级元素高度 ,治标不治本
            height: 1000px;

             */

            /**
            3. 在父级元素中增加一个
            overflow: hidden;
             */

        }
        span{
            margin: 2px;
            background: #21D4FD;
            display: inline-block;
            float: right;

        }

        /**
        2. 增加一个空的div标签,清楚浮动
         */
        .clear{
            clear: both;
            margin: 0;
            padding: 0;
        }

        /**
        4. 父级添加一个伪类
         */
        #father:after{
            content: '';
            display: block;
            clear: both;
        }

    </style>
</head>
<body>
<div id="father">
    <span>span2</span>
    <span>span3</span>
    <span>span4</span>
    <span>span5</span>

<!--   2. <div class="clear"></div>-->
</div>
</body>
</html>

定位

相对定位

position: relative :相对原来的位置进行指定的偏移,它任然处于标准文档流中,原来的位置会被保留

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        .t{
            background: darkgrey;
            height:200px;
            border: 2px solid darkred ;
            margin: 10px;
        }
        .t1{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
        }
        .t2{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
        }
        .t3{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
            /*relative 相对定位*/
            position: relative;
            top: 120px;
        }

    </style>
</head>
<body>
<div class="t">
<div class="t1">定位</div>
<div class="t2">定位</div>
<div class="t3">定位</div>
</div>

</body>
</html>

绝对定位

position: absolute :相对父级或浏览器的位置进行指定的偏移,它不再处于标准文档流中,原来的位置不会被保留

  • 没有 父级元素没有被position 修饰(父级元素没有被定位),此时子级使用绝对定位是相对于浏览器的,反之亦然,但都处于父级元素范围内活动
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        .t{
            background: darkgrey;
            height:200px;
            border: 2px solid darkred ;
            margin: 10px;
        }
        .t1{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
        }
        .t2{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
        }
        .t3{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
            /*absolute 绝对定位*/
            position: absolute;
            top: 120px;
        }

    </style>
</head>
<body>
<div class="t">
    <div class="t1">定位</div>
    <div class="t2">定位</div>
    <div class="t3">定位</div>
</div>

</body>
</html>

固定定位

*position: fixed 页面有滚动条的情况下,元素的位置不会随着滚动而改变

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        .t{
            background: darkgrey;
            height:2000px;
            border: 2px solid darkred ;
            margin: 10px;
            position: relative;
        }
        .t1{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
        }
        .t2{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
        }
        .t3{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
            /*fixed 固定定位*/
            position: fixed;
            top: 0px;
        }

    </style>
</head>
<body>
<div class="t">
    <div class="t1">定位</div>
    <div class="t2">定位</div>
    <div class="t3">定位</div>
</div>

</body>
</html>

z-index 及 透明度

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        .t{
            background: darkgrey;
            height:2000px;
            border: 2px solid darkred ;
            margin: 10px;
            position: relative;
        }
        .t2{
            background: red;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
            position: relative;
            /*设置图层的高度 ,并且要设置相对定位*/
            z-index: 999;
        }
        .t3{
            background: blue;
            height:20px;
            border: 2px dashed  darkred ;
            margin: 10px;
            position: relative;
            top: -30px;
            /*设置透明度*/
            opacity: 0.5;
            filter: alpha(opacity=50);
        }

    </style>
</head>
<body>
<div class="t">
    <div class="t2">定位</div>
<!--    正常的下面根据相对定位会盖住上面的-->
    <div class="t3"></div>
</div>

</body>
</html>

CSS动画

渐变背景

=============================================================================
CSS 推荐狂神说

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈行恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值