随笔 - 38  文章 - 0  评论 - 0  阅读 - 6189

java学习之旅(day.22)

CSS

前端三要素:HTML、CSS、javaScript

​ 结构 表现 交互

相当于骨头,表皮 ,血肉吧

如何学习CSS

  1. CSS是什么
  2. CSS怎么用(快速入门)
  3. CSS选择器(重点+难点)
  4. 美化网页(文字、阴影、超链接、列表、渐变等)
  5. 盒子模型
  6. 浮动
  7. 定位
  8. 网页动画(特效效果)

什么是CSS

Cascading Style Sheet 层叠级联样式表

CSS可用于美化网页(字体,颜色,宽高,背景图片,网页定位,网页浮动等)

CSS的发展史

CSS1.0

CSS2.0 DIV+CSS ,提出了HTML与CSS结构分离的思想,这样网页更简单

CSS2.1 浮动、定位

CSS3.0 圆角、阴影、动画等

CSS快速入门

基本入门:

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

<!--    尽量在这写(head里),是规范,当然其他地方也可以   可以在这里写CSS代码-->
    <style>
<!--    语法 :    每一个语句最好使用分号结尾
    选择器{
        声明1;
        声明2;
        声明3;
         ...
    }
-->
<!-- 选中h1,字体颜色变为红色   -->
        h1{
        color:red;
        }
    </style>
</head>
<body>

<!--所有的样式可以写在标签里-->
<h1>我是标题</h1>

</body>
</html>

规范写法如下:

2.7

CSS的优势:

  1. 内容和表现分离
  2. 网页结构表现统一,可以实现复用
  3. 样式十分丰富
  4. 建立使用独立于html的CSS文件
  5. 利于SEO,容易被搜索引擎收录

CSS的3种导入方式

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

<!--2.内部样式表    -->
    <style>
        h1{
            color: green;
        }
    </style>
<!--3.外部样式    -->
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<!--1.行内样式:在标签元素种编写一个style属性,再编写样式即可  文件如果非常多,这种方式就不好了-->
<h1 style="color: red">我是标题</h1>
</body>
</html>

<!--优先级:  就近原则 谁离h1的那行代码最近,谁就先执行 (外部样式导入需要一个link标签)-->




<!--
/*外部样式*/
h1{
    color: yellow;
}-->

拓展:CSS2.0种还可以用@导入CSS

外部样式的两种写法

  • 链接式 link标签导入 html
<!--3.外部样式    -->
    <link rel="stylesheet" href="css/style.css">
  • 导入式 @import是CSS2.1特有的
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
<!-- 导入式   一般不建议使用    -->
        @import url("css/style.css");
    </style>
</head>
<body>
<h1>java</h1>
</body>
</html>

选择器

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

基本选择器

  1. 标签选择器:选择一类标签 标签{}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /*标签选择器有弊端,假使我只想让第一个h1变色,第二个h1默认,这样就不行了*/
        h1{/*这里能选择多个h1 即标签选择器会选择到页面上所有的这个标签的元素*/
            color: #ff464a;
            background: #96ff58;
            border-radius: 24px;/*圆角*/

        p{
            font-size: 80px; /*字体大小*/
        }
        }
    </style>
</head>
<body>

<!--标签选择器得先有标签,来2个-->
<h1>java</h1>
<h1>java</h1>
<p>狂神</p>

</body>
</html>
  1. 类选择器:选择所有class属性一致的标签,跨标签也行,只要你同属性 .类名{}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /*类选择器的语法格式:   .class的名称{}
        好处:可以多个标签归类(还能跨标签实现),相当于是同一个class 可以复用 如:若想标题3也有标题1一样的格式,直接将标题1中的class属性也加在标题3上即可 class复用*/
        .zhang{
            color: red;

        }
        .z{
            color: aqua;

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

<h1 class="zhang">标题1</h1><!--/*加个类属性class*/-->
<h1 class="z">标题1.1</h1><!--/*加个类属性class*/-->
<h1>标题2</h1>
<h1 class="zhang">标题3</h1>

<p class="zhang">跨标签</p>
</body>
</html>
<!---->
  1. id选择器:全局唯一,不可重复 #id名{}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /*id选择器 id不能复用,必须保证全局唯一,就是一人一个id 格式:  #id名称{}
        优先级别:不遵循就近原则  id选择器>class选择器>标签选择器*/
        #xing{
            color: #ff464a;

        }

        .style1{
            color: aqua;
        }

        h1{
            color: #96ff58;
        }
    </style>
</head>
<body>

<h1 id="xing">标题1</h1>
<h1 class="style1">标题2</h1>
<h1 class="style1">标题3</h1>
<h1>标题4</h1>
<h1>标题5</h1>

</body>
</html>

优先级:id选择器>class选择器>标签选择器

层次选择器

  1. 后代选择器:在某个元素的后面 太爷 爷爷 父亲 儿子 空格
/*后代选择器*/
  body p{/*body后面所有的p标签*/
      background: green;
  }
  1. 子选择器 只有一代 >
/*子选择器*/
body>p{/*body下面的第一代,再往下的一代没有*/
    background: antiquewhite;
}
  1. 相邻兄弟选择器 同一辈人 +
/*相邻兄弟选择器  相邻只有一个(选下不选上)*/
.active+p{
    background: red;
}
  1. 通用选择器 ~波浪号
/*通用兄弟选择器   当前选中元素向下的所有兄弟元素 选下不选上*/
.active~p{/*.zctive相邻的所有的p     p2378  有同级相邻,不同级相邻*/
    background: aquamarine;

}

2.71

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

    <style>
       /* p{
            background: aqua;
        }*/
      /*后代选择器*/
       /* body p{/*body后面所有的p标签
            background: green;
        } */

       /*子选择器*/
       /*body>p{/*body下面的第一代,再往下的一代没有
           background: antiquewhite;
       }*/

       /*相邻兄弟选择器  相邻只有一个(选下不选上)*/
       /*.active+p{.active周围的p标签,选下不选上
           background: red;
       }*/

       /*通用兄弟选择器   当前选中元素向下的所有兄弟元素 选下不选上*/
       .active~p{/*.zctive相邻的所有的p     p2378  有同级相邻,不同级相邻*/
           background: aquamarine;

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

<p>p0</p>
<p class="active">p1</p>

<p>p2</p>
<p>p3</p>

<ul>
    <li>
        <p>p4</p>
    </li>
    <li>
        <p>p5</p>
    </li>
    <li>
        <p>p6</p>
    </li>
</ul>

<p class="active">p7</p>
<p>p8</p>

</body>
</html>

结构伪类选择器

伪类:相当于加了一些条件 带冒号的

/*选中ul的第一个子元素 li1*/
ul li:first-child{/*ul li ul里的所有li标签*/
    background: aqua;

}

/*选中ul的最后一个子元素 li3*/
ul li:last-child{
    background: green;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--避免使用.class  id选择器    -->
    <style>

        /*选中ul的第一个子元素 li1*/
        ul li:first-child{/*ul li ul里的所有li标签*/
            background: aqua;

        }

        /*选中ul的最后一个子元素 li3*/
        ul li:last-child{
            background: green;
        }

        /*选中p1  先定位到父元素body,选择当前的第一个元素   按顺序*/
        p:nth-child(1){/*选择当前p元素的父级元素,选中父级元素的第一个子元素,并且是当前元素p才生效*/
            background: #ff464a;
        }

        /*选中父元素下的p元素的第二个   按类型*/
        p:nth-of-type(2){/*选择父元素中的第二个类型为p的子元素*/
            background: antiquewhite;
        }

        /*特效:hover   得先来个a标签*/
        a:hover{
            background: #96ff58;
        }

    </style>



</head>
<body>
<a href="">123456</a>
<!--<h1>h1</h1>-->
<p>p1</p>
<p>p2</p>
<p>p3</p>
<ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
</ul>
</body>
</html>

属性选择器(常用)

制作这样一个东西:

2.8

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*
       = 绝对等于
       *= 包含
       ^=  以什么开头
       ¥=  以什么结尾
       */
        .demo a{/*后代选择器*/
           float: left;/*浮动*/
            display: block;/*变成块*/
            height: 50px;
            width: 50px;
            border-radius: 10px;
            background: #96ff58;
            text-align: center;/*文字居中对齐*/
            color: gray;/*文字颜色*/
            text-decoration: none;/* 去掉下划线*/
            margin-right: 5px;/*外边距向右*/
            font: bold 20px/50px Arial; /*blod 粗体  20px /50px 字体大小 /行高*/
        }
    </style>
</head>
<body>

<p class="demo">
    <a href="">1</a>
    <a href="">2</a>
    <a href="">3</a>
    <a href="">4</a>
    <a href="">5</a>
    <a href="">6</a>
    <a href="">7</a>
    <a href="">8</a>
    <a href="">9</a>
    <a href="">10</a>
</p>
</body>
</html>

属性选择器把id class选择器结合了

现在想选中某个元素的属性让该元素变色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .demo a{/*后代选择器*/
           float: left;/*浮动*/
            display: block;/*变成块*/
            height: 50px;
            width: 50px;
            border-radius: 10px;
            background: #96ff58;
            text-align: center;/*文字居中对齐*/
            color: gray;/*文字颜色*/
            text-decoration: none;/* 去掉下划线*/
            margin-right: 5px;/*外边距向右*/
            font: bold 20px/50px Arial; /*blod 粗体  20px /50px 字体大小 /行高*/
        }
        /*
     = 绝对等于
     *= 包含
     ^=  以什么开头
     ¥=  以什么结尾
     */
        /*选中存在id属性的元素
           属性选择器的格式:
           标签[]{}   []中填所找的属性
           本例即a[]{}*/
        a[id]{/*选中a标签中带有id属性的标签*/
            background: #ff464a;
        }

        a[id=first]{/*选中a标签中id属性为first的标签*/
            background: gray;
        }
          /*class 这里要带引号,id不用带。id唯一,但有links的class不止一个*/
        a[class*="links"]{/*选中a标签中class中有links的标签*/
            background: antiquewhite;
        }

        /*这个加引号和不加引号都行*/
        a[href^=http]{/*选中herf中以http开头的元素*/
            background: green;
        }

        a[href$=doc]{/*选中herf中以doc结尾的元素*/
            background: aliceblue;
        }


    </style>
</head>
<body>

<p class="demo">
    <a href="http://www.baidu.com" class="links item first" id="first">1</a>
    <a href="" class="links active item" target="_blank" title="test">2</a>
    <a href="images/123.html" class="links item">3</a>
    <a href="images/123.png" class="links item" >4</a>
    <a href="images/123.jpg" class="links item">5</a>
    <a href="abc" class="links item">6</a>
    <a href="/a.pdf" class="links item">7</a>
    <a href="/abc.pdf" class="links item">8</a>
    <a href="/abc.doc" class="links item">9</a>
    <a href="abcd.doc" class="links item last">10</a>
</p>
</body>
</html>

美化网页元素

为什么要美化网页

  1. 有效的传递页面信息
  2. 美化网页,吸引用户
  3. 凸显主题
  4. 提高用户体验

span标签:重点突出的字,使用span套起来

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

    <style>
        #title{/*id选择器*/
            font-size: 50px;
        }
    </style>
</head>
<body>
一起学<span id="title">java</span>
</body>
</html>

字体样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--    font-family: 方正舒体;    字体
         font-size: 50px;  字体大小
         font-weight: bold; 字体粗细
         color: #96ff58;  字体颜色

  -->
    <style>
        body{
            font-family: 方正舒体;
        }
        h1{
            font-size: 50px;
        }
        .p1{
            font-weight: bold;
            color: #96ff58;
        }
    </style>
</head>
<body>
<h1>介绍</h1>
<p class="p1">
    狴犴(bì àn)又名宪章,中国古代神话传说中的神兽,为鳞虫之长瑞兽龙之第七子。形似虎,平生好讼,却又有威力,狱门上部那虎头形的装饰便是其图像。

</p>
《龙经》有云:“狴犴好讼,亦曰宪章。”传说狴犴不仅急公好义,仗义执言,而且能明辨是非,秉公而断,再加上它的形象威风凛凛,因此除装饰在狱门上外,还匐伏在官衙的大堂两侧。每当衙门长官坐堂,行政长官衔牌和肃静回避牌的上端,便有它的形象,它虎视眈眈,环视察看,维护公堂的肃穆正气。
狴犴既是牢狱的象征,又是黎民百姓的守护神。此外,上虞区上浦镇冯浦村还有“狴犴龙舞”的文化习俗,颇具地方特色,深受当地群众欢迎。
<p>

</p>
</body>
</html>

文本样式

颜色

color
RGB:  0-F
RGBA: 透明度  A:0-1

文本对齐方式

text-align 排版 居中,左对齐,右对齐

首行缩进

text-indent: 2em; 段落首行缩进

行高

height=300px;
line-height=300px 行高 和块的高度一致就可以上下居中

单行文字上下居中 行高=height

装饰

text-decoration

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--颜色
RGB:  0-F
RGBA: 透明度  A:0-1
text-align 排版 居中,左对齐,右对齐
text-indent: 2em;  段落首行缩进

height=300px;
line-height=300px  行高 和块的高度一致就可以上下居中-->
    <style>
        a{
            text-decoration: none;/*a标签去下划线*/
        }
        h1{
            color: rgba(0,255,255,0.5);/*0.5为透明度*/
            text-align: center;/*文本居中*/
        }

        .p1{
            text-indent: 2em;/*首行缩进两个字母*/
        }

        .p3{
            background: maroon;
            height: 300px;
            line-height: 300px;
        }

        .l1{
            text-decoration:underline ;/*下划线*/
        }

        .l2{
            text-decoration: line-through;/*中划线*/
        }

        .l3{
            text-decoration: overline;/*上划线*/
        }
    </style>
</head>
<body>

<a href="">123</a>
<p class="l1">1231233</p>
<p class="l2">1231233</p>
<p class="l3">1231233</p>
<h1>介绍</h1>
<p class="p1">
    狴犴(bì àn)又名宪章,中国古代神话传说中的神兽,为鳞虫之长瑞兽龙之第七子。形似虎,平生好讼,却又有威力,狱门上部那虎头形的装饰便是其图像。

</p>
<p class="p3">
《龙经》有云:“狴犴好讼,亦曰宪章。”传说狴犴不仅急公好义,仗义执言,而且能明辨是非,秉公而断,再加上它的形象威风凛凛,因此除装饰在狱门上外,还匐伏在官衙的大堂两侧。每当衙门长官坐堂,行政长官衔牌和肃静回避牌的上端,便有它的形象,它虎视眈眈,环视察看,维护公堂的肃穆正气。
狴犴既是牢狱的象征,又是黎民百姓的守护神。此外,上虞区上浦镇冯浦村还有“狴犴龙舞”的文化习俗,颇具地方特色,深受当地群众欢迎。
</p>

</body>
</html>

文字图片水平对齐

vertical-align:middle

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

<!-- 现在文字在图片下方,想让文字和图片居中
水平对齐需要参照物   img和字对齐-->
    <style>
        img,span{
            vertical-align: middle;
        }
    </style>
</head>
<body>

<p>
    <img src="imageS/2.8.PNG" alt="">
    <span>fnsnwoahoawulian</span>
</p>
</body>
</html>

阴影

/*text-shadow: #ff464a 10px 10px 10px;  阴影颜色 水平偏移 垂直偏移 阴影半径*/
#price{
    text-shadow: #ff464a 10px 10px 2px;/*若只想要水平或竖直方向的偏移,把对应的方向改为0即可*/
}

超链接伪类

正常情况下,记住a,a:hover即可

a{
            text-decoration: none;/*去下划线*/
            color: black;
        }

        /*鼠标悬浮的状态hover(只需要记住这个)*/
        a:hover{
            color: #96ff58;
            font-size: 50px;
        }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        a{
            text-decoration: none;/*去下划线*/
            color: black;
        }

        /*鼠标悬浮的状态hover(只需要记住这个)*/
        a:hover{
            color: #96ff58;
            font-size: 50px;
        }
         /*被激活的时候(鼠标点击不释放的时候的状态)*/
        a:active{
            color: #ff464a;
        }

        /*text-shadow: #ff464a 10px 10px 10px;  阴影颜色 水平偏移 垂直偏移 阴影半径*/
        #price{
            text-shadow: #ff464a 10px 10px 2px;/*若只想要水平或竖直方向的偏移,把对应的方向改为0即可*/
        }
    </style>
</head>
<body>

<!--图片标签-->
<a href="#">   <!--超链接-->
    <img src="images/2.8.PNG" alt="">
</a>

<!--文字标签-->
<p>
    <a href="#">开发手册,人手一本</a>
</p>
<p>
    <a href="">作者嗝屁了</a>
</p>

<p id="price">
    99$
</p>
</body>
</html>

列表

/*
list-style:
none   去掉圆点
circle   空心圆
decimal   数字
square   正方形
*/
ul{
    background: antiquewhite;
}
ul li{
    height: 30px;
    list-style: none;/*去样式  点*/
    text-indent: 1em;

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

    <link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>

<div id="nav">
<!--    div是没有任何作用的标签-->
    <h2 class="title">全部商品分类</h2>

    <ul>
        <li>
            <a href="#">图书</a>
            <a href="#">音像</a>
            <a href="#">数字商品</a>
        </li>
        <li>
            <a href="#">家用电器</a>
            <a href="#">手机</a>
            <a href="#">数码</a>
        </li>
        <li>
            <a href="#">电脑</a>
            <a href="#">办公</a>
        </li>
        <li>
            <a href="#">家居</a>
            <a href="#">家装</a>
            <a href="#">厨具</a>
        </li>
        <li>
            <a href="#">服饰鞋帽</a>
            <a href="#">个性化妆</a>
        </li>
        <li>
            <a href="#">礼品箱包</a>
            <a href="#">钟表</a>
            <a href="#">珠宝</a>
        </li>
        <li>
            <a href="#">食品饮料</a>
            <a href="#">保健食品</a>
        </li>
        <li>
            <a href="#">彩票</a>
            <a href="#">旅行</a>
            <a href="#">充值</a>
            <a href="#">票务</a>
        </li>
    </ul>

</div>

</body>
</html>
#nav{
    width:500px ;
    background: antiquewhite;/*有个空隙,让导航栏的颜色跟ul背景的颜色一致就可以去掉空袭*/
}
.title{
    font-size: 18px;
    font-weight: bold;
    text-indent: 1em;/*缩进*/
    line-height:35px; /*行高*/
    background: #ff464a;
    /*加个箭头哈哈*/
    /*颜色  图片  图片位置 平铺方式*/
    background: red url("images/down.png") 366px 4px no-repeat;

}

/*
list-style:
none   去掉圆点
circle   空心圆
decimal   数字
square   正方形
*/
ul{
    background: antiquewhite;
}
ul li{
    height: 30px;
    list-style: none;/*去样式  点*/
    text-indent: 1em;
    /*在这里加箭头也一样,这里写成分开的*/
    background-image: url("images/down.png");
    background-repeat: no-repeat;
    background-position: 324px 0px;

}

a{
    text-decoration: none;
    font-size: 14px;
    color: black;

}
a:hover{
    color: yellow;
    text-decoration: underline;

}
这个和上面那个是连着的

2.13

背景

背景颜色

backgroundcolor

背景图片

backgroundimage

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--   现在想把图片放到div里面  客用image标签,也可用背景,这里用背景-->
    <style>
        div{
            width: 1000px;
            height: 700px;
            border:1px solid red ;/*边框的粗细  边框的样式 边框的颜色*/
            background-image: url("images/2.8.PNG");/*默认是全部平铺的,水平加竖直*/
        }
        .div1{
            background-repeat: repeat-x;/*仅水平平铺*/
        }
        .div2{
            background-repeat: repeat-y;/*仅竖直平铺*/
        }
        .div3{
            background-repeat: no-repeat;/*就要一张图片*/
        }
    </style>
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
</body>
</html>

渐变

渐变属性

渐变的素材可以拷过来用的

background-color: #0093E9;
background-image: linear-gradient(160deg, #0093E9 0%, #80D0C7 100%);

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!-- 径向渐变  圆形渐变   -->
    <style>
        body{
            background-color: #0093E9;
            background-image: linear-gradient(160deg, #0093E9 0%, #80D0C7 100%);/*角度 当前的颜色 最后的颜色*/

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

</body>
</html>

盒子模型

什么是盒子模型

2.131

margin:外边距

padding:内边距

border:边距

边框

  1. 边框的粗细
  2. 边框的样式
  3. 边框的颜色
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            /*body有一个默认的外边距,此时为了上面顶格,要设为0*/
            /*margin: 0;
            padding: 0;
            text-underline: none;*/
        }
        /*border: 粗细 样式 颜色*/
        #box{
            width: 300px;
            border: 1px solid red;
        }

        h2{
            font-size: 16px;
            background: #96ff58;
            line-height: 30px;
        }
        form{
            background: #96ff58;
        }

        div:nth-of-type(1) input{
            border: 3px solid rebeccapurple;
        }

        div:nth-of-type(2) input{
            border: 3px dashed green;
        }
    </style>
</head>
<body>
<!--所有东西套个div-->
<div id="box">
    <h2>会员登陆</h2>
    <form action="#">
        <div>
            <span>姓名:</span>
            <input type="text">
        </div>

        <div>
            <span>密码:</span>
            <input type="text">
        </div>

        <div>
            <span>邮箱:</span>
            <input type="text">
        </div>
    </form>
</div>
</body>
</html>

2.14

内边距(padding)和外边距(margin)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--    外边距的妙用  居中元素
        margin: 0 auto;
        -->
    <style>
        body{
            /*body有一个默认的外边距,此时为了上面顶格,要设为0*/
            /*margin: 0;
            padding: 0;
            text-underline: none;*/
        }
        /*border: 粗细 样式 颜色*/
        #box{
            width: 300px;
            border: 1px solid red;
            margin: 0 auto;/*0 上下边距为0  auto 左右自动对齐*/
        }

        /*margin: 0; 上下左右边距都为0
          margin: 0 1px; 上下为0  左右为1px
          margin-top: 0 1px 2px 3px; 上右下左 (顺时针)
          */
        h2{
            font-size: 16px;
            background: #96ff58;
            line-height: 30px;
            margin-top: 0;
            margin-bottom: 0;
        }
        form{
            background: #96ff58;
        }

        imput{
            border: 1px solid black;
        }

        div:nth-of-type(1){
            padding: 10px;
        }
    </style>
</head>
<body>
<div id="box">
    <h2>会员登陆</h2>
    <form action="#">
        <div>
            <span>姓名:</span>
            <input type="text">
        </div>

        <div>
            <span>密码:</span>
            <input type="text">
        </div>

        <div>
            <span>邮箱:</span>
            <input type="text">
        </div>
    </form>
</div>
</body>
</html>

盒子模型的计算方式 也就是元素到底右多大

2.15

元素最终的大小=margin+border+padding+内容的宽度

圆角边框

<style>
    div{
        width: 100px;
        height: 100px;
        border: 10px solid green;
        border-radius: 50px;/*两个值的时候是对角线上*/
    }

</style>

盒子阴影

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
/*margin: 0 auto  居中
要求:块元素  块元素右固定的宽度*/
        img{

            border: 10px solid rebeccapurple;
            box-shadow:10px 10px 100px yellow ;/*阴影*/
        }
    </style>
</head>
<body>
<div style="width: 500px;display: block;text-align: center">

    <img src="images/2.8.PNG" alt="">
    555
</div>
</body>
</html>

浮动

标准文档流

块级元素:独占一行 一块 如:h1-h6 p标签 div标签 uli列表

行内元素:不独占一行 文字有几行就几行 如:span a标签 img strong等

行内元素可以被包含在块级元素中,反之不可以

display

<!--
block 块元素
inline 行内元素
inline-block 即是行内元素也是块元素,既保持了块元素的特性,又可以写在一行
none 消失-->
    <style>
        div{
            width: 100px;
            height: 100px;
            border: 1px solid yellow;
            display: inline;/*不加这句的话就只有一块*/
        }
        span{
            width: 100px;
            height: 100px;
            border: 1px solid yellow;
            display: block;/*不加这句的话就只有一行*/
        }
    </style>

float

.layer01{
    border: 1px #F00 dashed;
    display: inline-block;
    float: left;/*浮动   就是浮起来
    但是扩大缩小页面时,会重新排版*/
}
.layer02{
    border: 1px #00F dashed;
    display: inline-block;
    float: right;
}

父级边框塌陷问题

/*clear: both;两侧不允许浮动,假设有,则排到它的下面一行
clear: left; 左侧不允许浮动,假设有,则排到它的下面一行
clear: right; 右侧不允许浮动,假设有,则排到它的下面一行
clear: none;什么都没有 ,假设有,则排到它的下面一行*/

如何让其怎么浮动都在父级边框中

法一:让父级边框的height大于图片的高度 low 不建议使用

#father{
    border: 1px #000 solid;
    height: 800px;
}

法二:增加一个空的div标签,清除浮动

<!--    空的div标签-->
    <div class="clear"></div>
    
    .clear{
    clear: both;
    margin: 0;
    padding: 0;
}

法三:overflow 溢出 内容超过了规定的文本大小时,用溢出

在父级元素中增加一个overflow:hidden;

#father{
    border: 1px #000 solid;
    /*height: 800px;*/
    overflow: hidden;
}
<style>
    #content{
        width: 200px;
        height: 150px;/*若不加下面的overflow就直接是图片下面是文字*/
        overflow: scroll;/*这样就有滚动条了,溢出时会加滚动条*/
    }

法四:在父类添加一个伪类:after 和法二有异曲同工之妙吧,这种不用再加div标签了

/*来个伪类*/
#father:after{
    content: '';
    display: block;
    clear: both;
}

小结:

  1. 浮动元素后面增加空的div

​ 简单,但是在代码中尽量避免空的div

  1. 设置父元素的高度

​ 简单,但是当内容高度超过父元素的高度就不行了,(元素假设有了固定的高度就会被限制)

  1. overflow 尽量避免使用

  2. 父类添加一个伪类:after 推荐使用这种(父元素后增加一个空内容,变成block块,再清除浮动就可以了)

对比display和float

diaplay:方向不可控制

float:浮动起来的话会脱离标准文档流,所以需要解决父级边框塌陷的问题(内容高大于父级边框高)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="css.css">
</head>
<body>
<div id="father">
    <div class="layer01"><img src="images/1.png" alt=""></div>
    <div class="layer02"><img src="images/2.png" alt=""></div>
    <div class="layer03"><img src="images/3.png" alt=""></div>
    <div class="layer04">
        浮动的盒子可以向左浮动,也可以向右浮动,指导它的边缘碰到包含框或另一个浮动盒子为止
    </div>
<!--    空的div标签-->
<!--    <div class="clear"></div>-->
</div>
</body>
</html>
div{
    margin: 10px;
    padding: 5px;
}
#father{
    border: 1px #000 solid;
    /*height: 800px;*/
    overflow: hidden;
}
/*来个伪类*/
#father:after{
    content: '';
    display: block;
    clear: both;
}
.layer01{
    border: 1px #F00 dashed;
    display: inline-block;
    float: left;/*浮动   就是浮起来
    但是扩大缩小页面时,会重新排版*/
}
.layer02{
    border: 1px #00F dashed;
    display: inline-block;
    float: left;
}
.layer03{
    border: 1px #060 dashed;
    display: inline-block;
    float: right;
}
/*clear: both;两侧不允许浮动,假设有,则排到它的下面一行
clear: left; 左侧不允许浮动,假设有,则排到它的下面一行
clear: right; 右侧不允许浮动,假设有,则排到它的下面一行
clear: none;什么都没有 ,假设有,则排到它的下面一行*/
.layer04{
    border: 1px #666 dashed;
    font-size: 12px;
    line-height: 23px;
    display: inline-block;
    float:right;
    /*clear: both;*/
}
/*不加display的话都是块元素,现在加上后变为行内元素了*/
.clear{
    clear: both;
    margin: 0;
    padding: 0;
}

定位

相对定位

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--相对定位:相对于自己原来的位置进行偏移
    -->
    <style>
        div{
            margin: 10px;
            padding: 5px;
            font-size: 12px;
            line-height: 25px;
        }
        #father{
            border: 1px solid #666;
            padding: 0;
        }
        #first{
            background: #96ff58;
            border: 1px dashed #00fd47;
            position: relative;/*相对定位  属性:上下左右*/
            top: -20px;/*距离顶部-20px*/
            left: 20px;/*距离左边20px*/
        }
        #second{
            background: #0000FF;
            border: 1px dashed #666;
        }
        #third{
            background: #0093E9;
            border: 1px dashed #666;
            position: relative;/*相对定位  属性:上下左右*/
            bottom: 20px;/*距离底部20px*/
        }
    </style>
</head>
<body>
<div id="father">
   <div id="first">第一个盒子</div>
   <div id="second">第二个盒子</div>
   <div id="third">第三个盒子</div>
</div>
</body>
</html>

相对定位:position: relative; 相对于原来的位置进行指定的偏移(上top 下bottom 左left 右right),相对定位仍在标准文档流中,并没有像浮动那样浮出去,原来的位置会被保留下来

作业

实现下图

2.18

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #box{
            width: 300px;
            height: 300px;
            padding: 10px;
            border: 2px solid red;
        }
        a{
            width: 100px;
            height: 100px;
            text-decoration: none;
            display: block;/*行内元素改为块元素*/
            background: #ed85f1;
            /*文字居中*/
            line-height: 100px;/*上下居中*/
            text-align: center;/*左右居中*/
            color: white;
        }
        a:hover{
            background: #0000FF;
        }
        .a2{
            position: relative;
            top: -100px;
            left: 200px;
        }
        .a4{
            position: relative;
            top: -100px;
            left: 200px;
        }
        .a5{
            position: relative;
            top: -300px;
            left: 100px;
        }
    </style>
</head>
<body>
<div id="box">
    <a class="a1" href="#" >链接1</a>
    <a class="a2" href="#" >链接2</a>
    <a class="a3" href="#" >链接3</a>
    <a class="a4" href="#" >链接4</a>
    <a class="a5" href="#" >链接5</a>
</div>
</body>
</html>

绝对定位

定位:基于***定位,上下左右

2种情况

  1. 是在没有父级元素定位的前提下,相对于浏览器的定位
  2. 假设父级元素存在定位,通常会相对于父级元素进行偏移

在父级元素范围内移动

相对于父级或浏览器的位置,进行指定的偏移,绝对定位后,不在标准文档流中,原来的位置不会被保留

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            margin: 10px;
            padding: 5px;
            font-size: 12px;
            line-height: 25px;
        }
        #father{
            border: 1px solid #666;
            padding: 0;
            position: relative;/*绝对定位2时加的*/
        }
        #first{
            background: #96ff58;
            border: 1px dashed #00fd47;
        }
        #second{
            background: #0000FF;
            border: 1px dashed #666;
            position: absolute;
            right: 30px;
            top: -10px;
        }
        #third{
            background: #0093E9;
            border: 1px dashed #666;
        }
    </style>
</head>
<body>
<div id="father">
   <div id="first">第一个盒子</div>
   <div id="second">第二个盒子</div>
   <div id="third">第三个盒子</div>
</div>
</body>
</html>

不理解???

固定定位fixed

绝对定位:相对于浏览器的定位

固定定位:无论怎么走,都在那个位置,比如有滚动条的页面,无论怎么滑动滚动条,某元素的位置固定不变

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            height: 1000px;/*设这么大是为了产生滚动条*/
        }
        div:nth-of-type(1){/*选中父级元素body下的第一个div*/
            width: 100px;
            height: 100px;
            background: red;
            position: absolute;/*绝对定位,相对于浏览器*/
            right: 0;
            bottom: 0;/*距离最右和最下边为0*/

        }
        div:nth-of-type(2) { /*选中父级元素body下的第二个div*/
            width: 50px;
            height: 50px;
            background: #fff200;
            position: fixed; /*固定定位*/
            right: 0;
            bottom: 0; /*距离最右和最下边为0*/
        }
    </style>
</head>
<body>
<div>div1</div>
<div>div2</div>
</body>
</html>

z-index

图层

z-index:默认是0,最高无限大,可以写成0-999

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #content{
           padding: 0;
            margin: 0;
            width: 380px;
            overflow: hidden;
            font-size: 12px;
            line-height: 25px;
            border: 1px #000 solid;
        }
        ul,li{
            padding: 0;
            margin: 0;
            list-style: none;/*去圆点,但这里自己就没了,不知道为啥*/
        }
        /*现在要把文字搞在图片上   用到相对定位*/
        #content ul{
            position: relative;/*父级元素相对定位,子级元素li就可以根据父级元素进行绝对定位*/
        }
        .tipText,.tipBg{
            position: absolute;
            width: 380px;
            height: 25px;
            top: 211px;
        }
        .tipBg{
            background: black;
            opacity: 0.5;/*背景透明度*/
            filter: alpha(opacity=50);/*了解,会上一行就行*/
        }
        /*此时文字被覆盖了  就有层级了,想把文字显示上来  */
        .tipText{
            color: white;
            z-index: 999;/*层级*/
        }
    </style>
</head>
<body>
<div id="content">
    <ul>
        <li><img src="images/1.jpg" alt=""></li>
        <li class="tipText">学习微服务</li>
        <li class="tipBg"></li>
        <li>时间:2099-01-01</li>
        <li>地点:还有吗</li>
    </ul>
</div>
</body>
</html>

opacity:0.5 ; 背景透明度

动画

收藏了那么多网站,自己看吧,不是重点

总结

posted on   懵逼的程序小白  阅读(107)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示