CSS基础学习day01

一、CSS简介

     css是一种网页渲染技术,把文档结构和表现形式分离,使得网页更加的清爽。

          css的必要条件:渲染特定的html标签。

    div、span等容器:

      div可以称为层或者块状元素,和p标签、h等标签具有一样的特点:单独占一行。

      span称行内元素,和a标签、font标签、img等标签具有一样的特点:可以在一行中显示。

    但是呢:css学习完后,没有绝对的“行内元素”和“块状元素”,可以通过display属性来进行转换【inline(行内)与block(块状)】

二、css写在哪呢?

    1:.css可以写在标签内部的style属性中,这种称为内联样式。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <span style="font-size: 80px;  color: red;  font-weight: bold;">
            一个字
        </span>
    </body>
</html>

    2.css可以写在hear下的style标签中,这种称为内部样式表。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            span{
                 font-size: 80px;
                 color: red;
                 font-weight: bold;
            }
        </style>
    </head>
    <body>
        <span>
            一个字
        </span>
    </body>
</html>

    3.css可以写在单独的css文件中,需要<link>标签来引入css文件,这种称为外部样式表

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="mystyle.css">
    </head>
    <body>
        <span>
            一个字
        </span>
    </body>
</html>

二、选择器

  1.标签选择器:使用HTML标签名来作为选择器,作用在相同的标签上。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            span{
                 font-size: 80px;
                 color: red;
                 font-weight: bold;
            }
        </style>
    </head>
    <body>
        <span>
            一个字
        </span>
    </body>
</html>

   2.类选择器:以 . + 名称来命名

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .sp{
                color: red;
            }
        </style>
    </head>
    <body>
        <span class="sp">
            一个字
        </span>
    </body>
</html>

    3.ID选择器:以#+名称来命名

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #sp{
                color: red;
            }
        </style>
    </head>
    <body>
        <span id="sp">
            一个字
        </span>
    </body>
</html>

    4.通配符选择器,直接以*号命名,一般建议写在css开头,会渲染所有的标签。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            #sp{
                color: red;
            }
        </style>
    </head>
    <body>
        <span id="sp">
            一个字
        </span>
    </body>
</html>   

    5.符合选择器或者群组选择器,将多个选择器写在一起,使用相同的css样式来渲染元素。

 

 

     6.父子选择器。缩小目标范围,只作用在 “子 级”元素上,由父选择器>子选择器构成,注意:最终是渲染 符合子选择器的元素。父选择器和子选择器可以由,标签、id、class 等选择器构成。

    7.伪类选择器hover,当鼠标放到对象上面时会出现hover的效果。

        :before >>> 在匹配的元素中,添加内容---添加在原有内容的前面。

        :after >>> 在匹配的元素中,添加内容---添加在原有内容的后面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            /*:hover
             * 鼠标悬停时的效果
             */
            a{
                background-color: #008000;
                width: 300px;
                height: 42px;
            }
            a:hover{
                color: red;
                background-color: #DCDCDC;
            }
            
            /*:before
             * 在匹配的元素中,添加内容---添加在原有内容的前面
             * */
            li:before{
                content: "这是第";
            }
            /**
             * :after
             * 在匹配的元素中,添加内容---添加在原有内容的后面
             * */
            li:after{
                content: "个";
            }
            #div3{
                border: 1px solid red;
                border-radius: 5px;
            /*    box-shadow: ;*/
                text-align: center;
                width: 80px;
            }
            #ul1{
                margin: 0;
                padding: 0;
                list-style: none;
                /*不显示*/
                display: none;
            }
            #div3:hover #ul1{
                display: block;
            }
        </style>
    </head>
    <body>
        <a>演示hover</a>
        
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
        <div>*************************************************************</div>
        <div id="div3">
            <span>内容</span>
            <ul id="ul1">
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
            </ul>
        </div>
    </body>
</html>

 

三、css常用属性

  1.尺寸:

    宽度  width:100px或者100%;

    高度 height:100px或者100%;

  2.边框

       border-top: 2px solid red;

            border-right: 5px dashed black;

            border-bottom: 10px double violet;

            border-left: 3px dotted green;

     设置上下左右边框的样式不同,solid: 定义实线边框,dashed: 定义一个虚线边框,double: 定义两个边框。 两个边框的宽度和 border-width 的值相同,dotted: 定义一个点线边框

  

       /*字体*/

            /*颜色*/

            color: orange;

          /*字体大小*/

            font-size: 20px;

          /*字体加粗*/

            font-weight: bold;

          /*字体样式*/

            font-family: "微软雅黑";

          /*倾斜字体*/

            font-style: italic;

          /*文本居中*/

            text-align: center;

          /*行高:使文本垂直居中*/

            line-height: 700px;

          /*文字装饰线*/

            text-decoration:overline;

          /*背景*/

            /*背景颜色*/

            background-color: yellow;

          /*背景图片*/

            background-image:url(img/img1.jpg) ;

          /*背景图片是否重复*/

           background-repeat:repeat-y;

          /*表格边框合并*/

            border-spacing: 0px;

            border-collapse: collapse;

  /*转换成块状元素*/

            display: block;

          /*背景图片定位*/

            background-position: center top;

            background-position:-30px  200px;

          /*背景图片放缩*/

            background-size: 100% 100%;

  /*去掉列表项目符号*/

            ist-style: none;

          /*设置列表的项目符号图片*/

       list-style-image: url(img/resizeApi.png);

   设置行内块状元素:兼具行内元素和块状元素的特点

      display: inline-block;

四、盒子模型

  注意:行内元素设置宽高无效,由内容大小确定。如span标签等。

  1.外边距 margin

    margin:50px; 上下左右各外边距都为50px;

    单独设置:

      margin-left: 15px;

              margin-right:30px ;

              margin-top: 50px;

                      margin-bottom: 20px;

  2.内边距 padding

    padding: 30px; 设置上下左右内边距都为30px;

    单独设置:

       padding-bottom: 30px;

                      padding-left: 20px;

                      padding-right: 30px;

                      padding-top: 10px;

  3.盒子模型实际高度=(margin-top)+(border-top)+(padding-top)+height +(margin-bottom)+(border-bottom)+(padding-bottom);

     盒子模型实际宽度=(margin-left)+(border-left)+(padding-left)+width+(margin-right)+(border-right)+(padding-right);

     注意如果设置了box-sizing: border-box;,盒子宽度和高度就包含了border和padding,不再使用上面的公式计算高度和宽度。

  

  盒子模型外边距合并情况1:

    1.两个div嵌套

    2.两个div都没有设置边框

    这样会使margin值合并,以margin值大的为准

  实例:

    首先设置存在边框效果:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            /*通配符选择器:设置默认样式*/
            *{
                margin: 0;
                padding: 0;
            }
            /*id 选择器*/
            #div1{
                margin-top:50px;
                width: 400px;
                height: 400px;
                background-color: orange;
                border: 1px solid red; 
            }
            #div2{
                margin-top:20px;
                width: 200px;
                height: 200px;
                background-color: pink;
                border: 1px solid blue; 
            }
        </style>
    </head>
    <body>
        <div id="div1">
            <div id="div2">
                
            </div>
        </div>
    </body>
</html>

效果图:

  取消边框就会出现margin值合并,margin以大的为准:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            /*通配符选择器:设置默认样式*/
            *{
                margin: 0;
                padding: 0;
            }
            /*id 选择器*/
            #div1{
                margin-top:50px;
                width: 400px;
                height: 400px;
                background-color: orange;
                /* border: 1px solid red; */
            }
            #div2{
                margin-top:20px;
                width: 200px;
                height: 200px;
                background-color: pink;
                /* border: 1px solid blue; */
            }
        </style>
    </head>
    <body>
        <div id="div1">
            <div id="div2">
                
            </div>
        </div>
    </body>
</html>

效果图:

  当里面的div的margin-top大于外面的div时,没有边框,margin会以大的值为准。

  解决这种问题的方法:

           1.选择避免这种情况。

           2.在父级div上添加padding-top=“xx px”;

盒子模型外边距合并情况2:

      1.当两个div 垂直排列时,如果div1有 margin-bottom ,div2有margin-top,这时也会发生边距合并,并且以 较大的值为准。

  实例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            /*通配符选择器:设置默认样式*/
            *{
                margin: 0;
                padding: 0;
            }
            /*id 选择器*/
            #div1{
                
                width: 300px;
                height: 300px;
                background-color: green;
                border: 1px solid red;
                margin-bottom: 50px;
            }
            #div2{
                /* margin-top:120px; */
                width: 200px;
                height: 200px;
                background-color: pink;
                border: 1px solid blue;
                margin-top: 30px;
            }
        </style>
    </head>
    <body>
        <div id="div1"></div>
        <div id="div2"></div>
    </body>
</html>

  上面的div设置了margin-bottom为50px,下面的div设置了margin-top为30px,按理它们之间的间距应该为80px,但是发生了间距合并,以margin值大的为准,所以它们的间距为50px。

    该问题无法解决,只能去避免,找准参照物就可以更好的实现效果。

posted @ 2020-08-14 23:57  少年与梦©  阅读(207)  评论(0)    收藏  举报