Java学习笔记(No.23)

Java之CSS3详解(No.23)

1、CSS(Cascading Style Sheets)

CSS(Cascading Style Sheets,层叠样式表)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化

CSS能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力

CSS可以美化网页,比如“字体、颜色、边距、宽度、高度、背景图片、网页定位、网页浮动”等

2、CSS发展史(CSS Development History)

  • 2.1、CSS1.0版本,HTML与CSS结构在一起,网页较复杂,不利于SEO(Search Engine Optimization)
  • 2.2、CSS2.0版本,新增DIV(块元素)+CSS,实现HTML与CSS结构分离,网页变得简单,利于SEO(Search Engine Optimization)
  • 2.3、CSS2.1版本,新增定位、浮动…
  • 2.4、CSS3.0版本,新增圆角、阴影、动画…,但同时也会出现浏览器兼容性问题

3、CSS优点(CSS Advantages)

  • 3.1、内容(HTML)和表现(CSS)分离
  • 3.2、网页结构变现统一,可以实现复用
  • 3.3、样式十分的丰富
  • 3.4、建议使用独立于HTML的css文件
  • 3.5、利于SEO(Search Engine Optimization),容易被搜索引擎收录

4、四种CSS导入方式(Four CSS Import Methods)

4.1、内部样式(Internal Style)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>内部样式CSS</title>
    <!--
    <style>与</style>之间可以编写CSS代码,且每一行声明代码都用分号结尾;
    其语法格式为:
                <style>
                    选择器{
                        声明1;
                        声明2;
                        声明3;
                        ...
                    }
                </style>
    -->
    <!--内部样式-->
    <style>
        h1{
            color: red;
        }
    </style>
</head>
<body>
<h1>内部样式CSS</h1>
</body>
</html>

4.2、外部链接样式(External Link Style)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外部链接式CSS</title>
    <!--外部链接式-->
    <link rel="stylesheet" href="../../../css/css1.css">
</head>
<body>
<h1>外部链接式CSS</h1>
</body>
</html>

其CSS示例代码,如下所示

h1{
    color: green;
}

4.3、外部导入样式(External Import Style)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外部导入式CSS</title>
    <!--外部导入式-->
    <style>
        @import url("../../../css/css1.css");
    </style>
</head>
<body>
<h1>外部导入式CSS</h1>
</body>
</html>

其CSS示例代码,如下所示

h1{
    color: green;
}

4.4、行内样式(Inline Style)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>行内样式CSS</title>
    <!--内部样式-->
    <style>
        h1{
            color: red;
        }
    </style>
    <!--外部链接式-->
    <link rel="stylesheet" href="../../../css/css1.css">
</head>
<body>
    <!--优先级:就近原则-->
    <!--内部样式-->
    <h1 style="color: blue">行内样式</h1>
</body>
</html>

其CSS示例代码,如下所示

h1{
    color: green;
}

5、三种CSS基本选择器(Three CSS Basic Selectors)

选择器的作用就是“选择页面上的某一个或者某一类元素”

5.1、标签选择器(Tag Selector)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>标签选择器</title>
    <style>
        /*
        标签选择器:会选择页面上所有的这个标签的元素
        其格式:
            标签{
                声明1;
                声明2;
                声明3;
                ...
            }
        */
        h1 {
            color: crimson;
            background: cyan;
            border-radius: 20px;
        }
        p {
            font-size: 50px;
        }
    </style>
</head>
<body>
    <h1>Java</h1>
    <h1>HTML</h1>
    <h1>CSS</h1>
    <p>HTML5&nbsp;CSS3</p>
</body>
</html>

5.2、类选择器(Class Selector)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>类选择器</title>
    <style>
        /*
        类选择器:可以把多个不同类型标签归为一类(class),从而可以实现复用
        其格式:
            .类名称{
                声明1;
                声明2;
                声明3;
                ...
            }
        */
        .cls1{
            color: orange;
        }
        .cls2{
            color: purple;
        }
    </style>
</head>
<body>
    <h1 class="cls1">Java</h1>
    <h1 class="cls2">HTML</h1>
    <h1 class="cls1">CSS</h1>
    <p class="cls1">HTML5&nbsp;CSS3</p>
</body>
</html>

5.3、ID选择器(ID Selector)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ID选择器</title>
    <style>
        /*
        ID选择器:必须保证id全局唯一,
        其格式:
            #id名称{
                声明1;
                声明2;
                声明3;
                ...
            }
        三种基本选择器的优先级原则:“id选择器>class选择器>标签选择器”,不遵循就近原则。
        */
        #id1{
            color: red;
        }
        #id2{
            color: orange;
        }
        .cls1{
            color: yellow;
        }
        .cls2{
            color: green;
        }
        h1{
            color: blue;
        }
    </style>
</head>
<body>
    <h1 class="cls1" id="id1">Java</h1>
    <h1 class="cls1">HTML</h1>
    <h1 class="cls2">CSS</h1>
    <p id="id2">HTML5&nbsp;CSS3</p>
    <h1>JavaScript</h1>
</body>
</html>

6、四种CSS层次选择器(Four CSS Hierarchy Selectors)

6.1、后代选择器(Descendant Selector)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>后代选择器</title>
    <style>
        /*
        后代选择器:选择某个类型元素的所有后代
        */
        body p{
            background: red;
        }
    </style>
</head>
<body>
    <p>p0</p>
    <h>h1</h>
    <p>p1</p>
    <p class="c1">p2</p>
    <p>p3</p>
    <ul>
        <li>
            <p>p4</p>
        </li>
        <li>
            <p>p5</p>
        </li>
        <li>
            <p>p6</p>
        </li>
    </ul>
    <p>p7</p>
    <ul>
        <li>
            <p>p8</p>
        </li>
        <li>
            <p>p9</p>
        </li>
        <li>
            <p>p10</p>
        </li>
    </ul>
    <p>p11</p>
    <a href="">a1</a>
</body>
</html>

6.2、子选择器(Child Selector)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>子选择器</title>
    <style>
        /*
        子选择器:选择某个类型元素的所有子代
        */
        body>p{
            background: red;
        }
    </style>
</head>
<body>
    <p>p0</p>
    <h>h1</h>
    <p>p1</p>
    <p class="c1">p2</p>
    <p>p3</p>
    <ul>
        <li>
            <p>p4</p>
        </li>
        <li>
            <p>p5</p>
        </li>
        <li>
            <p>p6</p>
        </li>
    </ul>
    <p>p7</p>
    <ul>
        <li>
            <p>p8</p>
        </li>
        <li>
            <p>p9</p>
        </li>
        <li>
            <p>p10</p>
        </li>
    </ul>
    <p>p11</p>
    <a href="">a1</a>
</body>
</html>

6.3、相邻兄弟选择器(Adjacent Brother Selector)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>相邻兄弟选择器</title>
    <style>
        /*
        相邻兄弟选择器:选择某个类型元素的同辈中向下的第一个相邻兄弟元素,若没有则不选中元素。
        */
        .c1+p{
            background: red;
        }
    </style>
</head>
<body>
    <p>p0</p>
    <h>h1</h>
    <p>p1</p>
    <p class="c1">p2</p>
    <p>p3</p>
    <ul>
        <li>
            <p>p4</p>
        </li>
        <li>
            <p>p5</p>
        </li>
        <li>
            <p>p6</p>
        </li>
    </ul>
    <p>p7</p>
    <ul>
        <li>
            <p>p8</p>
        </li>
        <li>
            <p>p9</p>
        </li>
        <li>
            <p>p10</p>
        </li>
    </ul>
    <p>p11</p>
    <a href="">a1</a>
</body>
</html>

6.4、通用兄弟选择器(Universal Brother Selector)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>通用兄弟选择器</title>
    <style>
        /*
        通用兄弟选择器:选择某个类型元素的同辈中向下的所有兄弟元素,若没有则不选中元素。
        */
        .c1~p{
            background: red;
        }
    </style>
</head>
<body>
    <p>p0</p>
    <h>h1</h>
    <p>p1</p>
    <p class="c1">p2</p>
    <p>p3</p>
    <ul>
        <li>
            <p>p4</p>
        </li>
        <li>
            <p>p5</p>
        </li>
        <li>
            <p>p6</p>
        </li>
    </ul>
    <p>p7</p>
    <ul>
        <li>
            <p>p8</p>
        </li>
        <li>
            <p>p9</p>
        </li>
        <li>
            <p>p10</p>
        </li>
    </ul>
    <p>p11</p>
    <a href="">a1</a>
</body>
</html>

7、CSS结构伪类选择器(CSS Structure Pseudo Class Selector)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS结构伪类选择器</title>
    <!--尽量避免使用“class选择器”或“id选择器”-->
    <style>
        /*ul的第一个子元素*/
        ul li:first-child{
            background: red;
        }
        /*ul的最后一个子元素*/
        ul li:last-child{
            background: purple;
        }
        /*选中p标签同级元素中的第5个元素*/
        p:nth-child(5){
            background: green;
        }
        /*选中p标签元素中的第5个元素*/
        p:nth-of-type(5){
            background: blue;
        }
    </style>
</head>
<body>
    <a href="">a</a>
    <h1>h1</h1>
    <span>span</span>
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
    <ul>
        <li>li1</li>
        <li>li2</li>
        <li>li3</li>
    </ul>
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</body>
</html>

8、CSS属性选择器(CSS Attribute Selector)

属性选择器(Attribute Selector):一般将"id选择器"与"class选择器"相结合,经常使用

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS属性选择器</title>
    <style>
        /*属性选择器(Attribute Selector):一般将"id选择器"与"class选择器"相结合,经常使用*/
        .attr_sel a{
            float: left;/*向左浮动*/
            display: block;/*显示为块元素*/
            height: 50px;/*高度为50像素*/
            width: 50px;/*宽度为50像素*/
            border-radius: 10px;/*圆角半径为10像素*/
            background: white;/*标签背景颜色*/
            text-align: center;/*居中对齐*/
            color: black;/*标签颜色*/
            text-decoration: none;/*取消标签下划线*/
            margin-right: 5px;/*右外边距为5像素*/
            font: bold 20px/50px Arial;/*字体加粗 字体大小/字体行高 字体类型*/
        }
        /*
        属性名:属性名=属性值(正则表达式)
        其中“=”代表“绝对等于这个元素”,“*=”代表“包含这个元素”,“^=”代表“以这个元素开头”,“$=”代表“以这个元素结尾”。
        */
        /*选择id属性的所有元素*/
        a[id]{
            background: red;
        }
        /*选择id等于"first"的元素*/
        a[id="first"]{
            background: orange;
        }
        /*选择class中包含"link"的所有元素*/
        a[class*="link"]{
            background: yellow;
        }
        /*选择href中以"http"开头的所有元素*/
        a[href^="http"]{
            background: green;
        }
        /*选择href中以"txt"结尾的所有元素*/
        a[href$="txt"]{
            background: blue;
        }
        /*选择href中以"docx"结尾的所有元素*/
        a[href$="docx"]{
            background: cyan;
        }
        /*选择href中以"pptx"结尾的所有元素*/
        a[href$="pptx"]{
            background: purple;
        }
        /*选择href中以"xlsx"结尾的所有元素*/
        a[href$="xlsx"]{
            background: darkred;
        }
        /*选择href中以"jpg"结尾的所有元素*/
        a[href$="jpg"]{
            background: orchid;
        }
        /*选择href中以"bmp"结尾的所有元素*/
        a[href$="bmp"]{
            background: olivedrab;
        }
        /*选择href中以"png"结尾的所有元素*/
        a[href$="png"]{
            background: burlywood;
        }
    </style>
</head>
<body>
<p class="attr_sel">
    <a href="https://www.baidu.com" title="百度" class="link1" id="first">1</a>
    <a href="https://gitee.com/mrxiaohu/openclass" title="码云" class="link2" target="_blank">2</a>
    <a href="../CSS结构伪类选择器/CSS结构伪类选择器.html" class="link3">3</a>
    <a href="../../resources/images/20210915001.jpg" class="link4">4</a>
    <a href="../../resources/images/20210915002.bmp" class="link5">5</a>
    <a href="../../resources/images/20210915003.png" class="link6">6</a>
    <a href="a1" class="link7">7</a>
    <a href="../../resources/documents/a1.docx" class="link8">8</a>
    <a href="../../resources/documents/a1.pptx" class="link9">9</a>
    <a href="../../resources/documents/a1.txt" class="link10">10</a>
    <a href="../../resources/documents/a1.xlsx" class="link11">11</a>
    <a href="abc1" class="link12">12</a>
    <a href="../../resources/documents/abc1.docx" class="link13">13</a>
    <a href="../../resources/documents/abc1.pptx" class="link14">14</a>
    <a href="../../resources/documents/abc1.txt" class="link15">15</a>
    <a href="../../resources/documents/abc1.xlsx" class="link16">16</a>
</p>
</body>
</html>

9、CSS字体样式(CSS Font Style)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS字体样式</title>
    <style>
        #id1 { /*id选择器*/
            font-size: 50px;/*字体大小*/
        }
        body{/*body标签选择器*/
            font-family: "Arial Black",楷体_GB2312;/*网页主体内容字体类型*/
            color: black;/*网页主体内容字体颜色*/
            font-size: 25px;
        }
        h1{/*h1标签选择器*/
          font-size: 30px;/*字体大小*/
        }
        .c1{/*class选择器*/
            font-weight: bolder;/*字体粗细*/
            font-size: 30px;/*字体大小*/
            color: red;/*字体颜色*/
        }
        p{/*p标签选择器*/
            font: oblique bolder 20px "华文楷体";/*字体风格:倾斜 加粗 20像素 华文楷体*/
        }
    </style>
</head>
<body>
    <!--span标签:“重点突出显示的文字”-->
    电影<span id="id1">长津湖</span>
    <h1>剧情介绍</h1>
    <p class="c1">1950年,中国志愿军部队与美军在朝鲜长津湖地区交战,中国人民志愿军第9兵团将美军1个多师分割包围于长津湖地区,歼敌1.3万余人,扭转了战场态势。这次战役收复了三八线以北的东部广大地区,是扭转局势的关键一战,而中国人民志愿军也付出了惨痛的牺牲,在零下三十多摄氏度的极端天气中,很多先烈是以端着枪的姿势被冻僵,体现了志愿军战士服从命令视死如归、冻成冰雕也不退缩的革命精神。</p>
    <h1>幕后制作</h1>
    <p>影片为了全景式再现这场战役的全过程,主创团队经过了5年多的剧本打磨,两年多的细致筹备,超过7万人次的群众演员参演,超大规模的服装道具军事装备准备,以及超百公里的战役战术设计。</p>
</body>
</html>

10、CSS文本样式(CSS Text Style)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS文本样式</title>
    <style>
        a{
            text-decoration: none;/*文本装饰:取消下划线*/
        }
        .p1{
            text-decoration: underline;/*下划线*/
        }
        .p2{
            text-decoration: line-through;/*中划线*/
        }
        .p3{
            text-decoration: overline;/*上划线*/
        }
        h1{
            color: rgba(0,255,255,0.8);/*文本颜色*/
            text-align: center;/*文本居中*/
        }
        .p4{
            text-indent: 2em;/*文本首行缩进2个文字高度的相对单位*/
        }
        .p5{
            background: yellow;/*文本背景颜色*/
            height: 50px;/*文本高度*/
            line-height: 50px;/*文本行高,与块的高度(即,文本高度)一致,就可以上下居中*/
        }
        img,span{
            vertical-align: middle;/*垂直对齐:span标签参照图像标签垂直居中对齐<*/
        }
    </style>
</head>
<body>
    <a href="">a1</a>
    <p class="p1">p1</p>
    <p class="p2">p2</p>
    <p class="p3">p3</p>
    <h1>剧情介绍</h1>
    <p class="p4">1950年,中国志愿军部队与美军在朝鲜长津湖地区交战,中国人民志愿军第9兵团将美军1个多师分割包围于长津湖地区,歼敌1.3万余人,扭转了战场态势。这次战役收复了三八线以北的东部广大地区,是扭转局势的关键一战,而中国人民志愿军也付出了惨痛的牺牲,在零下三十多摄氏度的极端天气中,很多先烈是以端着枪的姿势被冻僵,体现了志愿军战士服从命令视死如归、冻成冰雕也不退缩的革命精神。</p>
    <p class="p5">p5</p>
    <p>
        <img src="../../resources/images/20210915003.png" alt="">
        <span>span标签参照图像标签垂直居中对齐</span>
    </p>
</body>
</html>

11、CSS文本阴影与超链接伪类(CSS Text Shadow And Hyperlink Pseudo Class)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS文本阴影与超链接伪类</title>
    <style>
        a{/*a标签选择器*/
            text-decoration: none;/*文本装饰:取消下划线*/
            color: #000;/*黑色文本颜色*/
        }
        a:hover{/*超链接伪类hover:鼠标悬浮链接上状态*/
            color: orange;/*橙色文本颜色*/
            font-size: 50px;/*文本字体大小为50像素*/
        }
        a:active{/*超链接伪类active:鼠标按住链接未释放状态*/
            color: green;/*绿色文本颜色*/
        }
        a:visited{/*超链接伪类visited:链接已访问状态*/
            color: blue;/*蓝色文本颜色*/
        }
        #price{/*id选择器*/
            text-shadow: cyan 10px -10px 3px;/*文本阴影:阴影颜色 水平偏移量 垂直偏移量 阴影半径*/
        }
    </style>
</head>
<body>
    <!--
    <a href="#">代表“链接就是当前页面”
    -->
    <a href="#">
        <img src="../../resources/images/20210915004.png" alt="">
    </a>
    <p>
        <a href="#">码出高效:Java开发手册</a>
    </p>
    <p>
        <a href="">作者:杨冠宝、高海慧</a>
    </p>
    <p id="price">
        ¥99
    </p>
</body>
</html>

12、CSS列表样式(CSS List Style)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS列表样式</title>
    <link rel="stylesheet" href="../../css/列表样式.css" type="text/css">
</head>
<body>
<div id="nav">
    <h2 class="title">全部商品分类</h2>
    <ul>
        <li><a href="#">图书</a>&nbsp;&nbsp;<a href="#">音像</a>&nbsp;&nbsp;<a href="#">数字商品</a></li>
        <li><a href="#">家用电器</a>&nbsp;&nbsp;<a href="#">手机</a>&nbsp;&nbsp;<a href="#">数码</a></li>
        <li><a href="#">电脑</a>&nbsp;&nbsp;<a href="#">办公</a></li>
        <li><a href="#">家居</a>&nbsp;&nbsp;<a href="#">家装</a>&nbsp;&nbsp;<a href="#">厨具</a></li>
        <li><a href="#">服饰鞋帽</a>&nbsp;&nbsp;<a href="#">个护化妆</a></li>
        <li><a href="#">礼品箱包</a>&nbsp;&nbsp;<a href="#">钟表</a>&nbsp;&nbsp;<a href="#">珠宝</a></li>
        <li><a href="#">食品饮料</a>&nbsp;&nbsp;<a href="#">保健食品</a></li>
        <li><a href="#">彩票</a>&nbsp;&nbsp;<a href="#">旅行</a>&nbsp;&nbsp;<a href="#">充值</a>&nbsp;&nbsp;<a href="#">票务</a>
        </li>
    </ul>
</div>
</body>
</html>

其CSS示例代码,如下所示

#nav{
    width: 300px;/*div宽度*/
    background: rosybrown;/*div背景颜色*/
}
.title{
    font-size: 18px;/*18像素的字体大小*/
    font-weight: bold;/*字体加粗*/
    text-indent: 1em;/*h标签文本首行缩进1个文字高度的相对单位*/
    line-height: 35px;/*行高为35像素*/
    background: red;/*红色背景颜色*/
}
/*
ul无序列表中,list-style参数默认值代表“实心圆”;
list-style参数值为“none”时代表“去掉圆点”;
list-style参数值为“circle”时代表“空心圆”;
list-style参数值为“decimal”时代表“数字”;
list-style参数值为“square”时代表“正方形”;
*/
ul li{
    height: 30px;/*列表项高度*/
    list-style: none;/*列表项样式为去掉圆点*/
    text-indent: 1em;/*列表项文本首行缩进1个文字高度的相对单位*/
}
a{
    text-decoration: none;/*文本装饰为去掉下划线*/
    font-size: 15px;/*15像素的字体大小*/
    color: #000000;/*黑色文本颜色*/
}
a:hover{
    color: orange;/*橙色文本颜色*/
    text-decoration: underline;/*文本装饰为下划线*/
}

13、CSS背景图像应用及渐变(CSS Background Image Application And Gradual Change)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS背景图像应用及渐变</title>
    <style>
        div {
            width: 800px;/*宽度*/
            height: 600px;/*高度*/
            border: 1px solid red;/*红色固定1像素的边框*/
            background-image: url("../../resources/images/20210916001.png");/*背景图片,默认为repeat平铺*/
        }
        .div1 {
            background-repeat: repeat-x;/*以X方向平铺背景*/
        }
        .div2 {
            background-repeat: repeat-y;/*以Y方向平铺背景*/
        }
        .div3{
            background-repeat: no-repeat;/*不平铺背景*/
        }
        .div4{
            background-color: #FFFFFF;/*背景颜色*/
            background-image: linear-gradient(115deg,#FFFFFF 0%,#6284FF 50%,#FF0000 100%);/*背景图像渐变*/
            /*一般推荐背景图像渐变网址:https://www.grabient.com/*/
        }
        .div5{
            background-color: #FFFFFF;/*背景颜色*/
            background-image: linear-gradient(rgb(255, 255, 255) 0%, rgb(98, 132, 255) 50%, rgb(255, 0, 0) 100%);/*背景图像渐变*/
            /*opacity: 0;!*透明度,范围为“0.0(完全透明)~1.0(完全不透明)”*!*/
        }
    </style>
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
<div class="div4"></div>
<div class="div5"></div>
</body>
</html>

14、CSS盒子模型及边框使用(CSS Box Model And Border Use)

CSS盒子模型从外向内分别为“margin(外边距)”、“border(边框)”、“padding(内边距)”、“content(内容)”

CSS盒子的大小=“margin(外边距)”+“border(边框)”+“padding(内边距)”+“content(内容)”的所有大小

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS盒子模型及边框使用</title>
    <style>
        body,div,h2,form,span,input{
            margin: 0px;/*外边距为0像素*/
            padding: 0px;/*内边距为0像素*/
            text-decoration: none;/*文本装饰:取消下划线*/
        }
        #box1{
            width: 300px;/*300像素宽度*/
            border: 1px solid red;/*红色固定1像素边框*/
        }
        h2{
            font-size: 15px;/*字体大小为0像素*/
            background-color: green;/*绿色背景颜色*/
            line-height: 30px;/*行高为30像素*/
            color: white;/*白色文本颜色*/
        }
        form{
            background: blue;/*蓝色背景颜色表单*/
        }
        div:nth-of-type(1) input{
            border: 3px solid black;/*黑色固定3像素边框*/
        }
        div:nth-of-type(2) input{
            border: 3px solid yellow;/*黄色固定3像素边框*/
        }
        div:nth-of-type(3) input{
            border: 3px solid orange;/*橙色固定3像素边框*/
        }
    </style>
</head>
<body>
<div id="box1">
    <h2>会员登录</h2>
    <form action="#">
        <div>
            <span>账户:</span>
            <input type="text">
        </div>
        <div>
            <span>密码:</span>
            <input type="password">
        </div>
        <div>
            <span>邮箱:</span>
            <input type="email">
        </div>
    </form>
</div>
</body>
</html>

15、CSS内外边距及DIV居中(CSS inside And Outside Margins And Div Center)

DIV是层叠样式表中的定位技术,全称DIVision,即为划分,有时可以称其为图层。 DIV元素是用来为HTML(标准通用标记语言下的一个应用)文档内大块(block-level)的内容提供结构和背景的元素

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS内外边距及DIV居中</title>
    <style>
        /*外边距的好处:“居中元素”*/
        #box1{
            width: 300px;/*300像素宽度*/
            border: 1px solid red;/*红色固定1像素边框*/
            margin: 0 auto;/*上下外边距为0像素 右左外边距自动相同(即,左右居中对齐)*/
        }
        /*
        顺时针旋转:
        margin:0 代表“上下右左外边距都为0像素”
        margin:0 1px 代表“上下外边距都为0像素 右左外边距都为1像素”
        margin:0 1px 2px 代表“上外边距为0像素 右左外边距都为1像素 下外边距为2像素”
        margin:0 1px 2px 3px 代表“上外边距为0像素 右外边距为1像素 下外边距为2像素 左外边距为3像素”
        */
        h2{
            font-size: 15px;/*字体大小*/
            background-color: green;/*背景颜色*/
            line-height: 30px;/*行高*/
            color: white;/*字体颜色*/
            margin: 0px 120px 0px 120px;/*上外边距为0像素 右外边距为120像素 下外边距为0像素 左外边距为120像素*/
        }
        form{
            background: cyan;/*表单背景颜色*/
        }
        input{
            border: 1px solid black;/*输入框:黑色固定1像素边框*/
        }
    </style>
</head>
<body>
<div id="box1">
    <h2>会员登录</h2>
    <form action="#">
        <div>
            <span>账户:</span>
            <input type="text">
        </div>
        <div>
            <span>密码:</span>
            <input type="password">
        </div>
        <div>
            <span>邮箱:</span>
            <input type="email">
        </div>
    </form>
</div>
</body>
</html>

16、CSS圆角边框及阴影(CSS Border-Radius And Shadow)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS圆角边框及阴影</title>
    <!--
    border-radius:圆角边框(即,圆形边框):依次按照“左上、右上、右下、左下”的顺时针方向旋转
    -->
    <style>
        div{
            width: 100px;/*宽度*/
            height: 100px;/*高度*/
            border: 1px solid red;/*红色固定1像素边框*/
            /*border-radius: 100% 100% 100% 100%;!*圆角边框*!*/
        }
        #div1{
            border-radius: 0%;/*矩形边框*/
        }
        #div2{
            border-radius: 100%;/*圆角边框*/
        }
        #div3{
            border-radius: 100% 0% 0% 0%;/*左上扇形边框*/
        }
        #div4{
            border-radius: 0% 100% 0% 0%;/*右上扇形边框*/
        }
        #div5{
            border-radius: 0% 0% 100% 0%;/*右下扇形边框*/
        }
        #div6{
            border-radius: 0% 0% 0% 100%;/*左下扇形边框*/
        }
        #div7{
            width: 50px;
            border-radius: 50px 0px 0px 50px;/*左半圆边框*/
        }
        #div8{
            height: 50px;
            border-radius: 50px 50px 0px 0px;/*上半圆边框*/
        }
        #div9{
            width: 50px;
            border-radius: 0px 50px 50px 0px;/*右半圆边框*/
        }
        #div10{
            height: 50px;
            border-radius: 0px 0px 50px 50px;/*下半圆边框*/
        }
        img{
            background: deepskyblue;/*背景颜色*/
            border-radius: 100%;/*圆角边框*/
            box-shadow: 10px 10px 100px deeppink;/*盒子阴影:水平阴影位置 垂直阴影位置 模糊距离 阴影颜色*/
        }
    </style>
</head>
<body>
    <div id="div1"></div>
    <div id="div2"></div>
    <div id="div3"></div>
    <div id="div4"></div>
    <div id="div5"></div>
    <div id="div6"></div>
    <div id="div7"></div>
    <div id="div8"></div>
    <div id="div9"></div>
    <div id="div10"></div>
    <img src="../../resources/images/20210916002.png" alt="">
    <div style="width: 400px;height: 400px;display: block;text-align: center">
        <img src="../../resources/images/20210916002.png" alt="">
    </div>
</body>
</html>

17、CSS显示与浮动(CSS Display And Float)

块级元素:“独占一行”,行内元素:“不独占一行”,行内元素可以包含在块级元素中,反之则不可以

显示(Display):“会导致方向不可控制”;Float(浮动):“会脱离标准文档流,从而出现父级边框塌陷问题”

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS显示与浮动</title>
  <link rel="stylesheet" href="../../css/显示与浮动.css" type="text/css">
</head>
<body>
<div id="father">
  <div class="div1"><img src="../../resources/images/20210915002.bmp" alt=""></div>
  <div class="div2"><img src="../../resources/images/20210915003.png" alt=""></div>
  <div class="div3"><img src="../../resources/images/20210915004.png" alt=""></div>
  <div class="div4">
      浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止。
  </div>
</div>
</body>
</html>

其CSS示例代码,如下所示

/*
display:显示
其值为“block”时代表“显示块元素”;
其值为“inline”时代表“显示行内元素”;
其值为“inline-block”时代表“显示行内块元素”;
其值为“none”时代表“不显示元素”。
float:浮动
其值为“left”时代表“向左浮动”;
其值为“right”时代表“向右浮动”;
其值为“none”时代表“不浮动”。
*/
div{
    margin: 10px;
    padding: 5px;
}
#father{
    border: 1px #000 solid;
}
.div1{
    border: 1px #F00 dashed;
    display: inline-block;
    float: right;
}
.div2{
    border: 1px #00F dashed;
    display: inline-block;
    float: right;
}
.div3{
    border: 1px #0F0 dashed;
    display: inline-block;
    float: right;
}
.div4{
    border: 1px red dashed;
    font-size: 15px;
    line-height: 30px;
    display: inline-block;
    float: right;
}

18、四种CSS父级边框塌陷解决方案(Four CSS Parent Border Collapse Solutions)

18.1、解决方案1:增加父级元素的高度

写法简单,但若元素已经有了固定的高度,就会被限制

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>增加父级元素的高度</title>
    <link rel="stylesheet" href="../../../css/增加父级元素的高度.css" type="text/css">
</head>
<body>
<div id="father">
  <div class="div1"><img src="../../../resources/images/20210915002.bmp" alt=""></div>
  <div class="div2"><img src="../../../resources/images/20210915003.png" alt=""></div>
  <div class="div3"><img src="../../../resources/images/20210915004.png" alt=""></div>
  <div class="div4">
    浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止。
  </div>
</div>
</body>
</html>

其CSS示例代码,如下所示

/*
display:显示
其值为“block”时代表“显示块元素”;
其值为“inline”时代表“显示行内元素”;
其值为“inline-block”时代表“显示行内块元素”;
其值为“none”时代表“不显示元素”。
float:浮动
其值为“left”时代表“向左浮动”;
其值为“right”时代表“向右浮动”;
其值为“none”时代表“不浮动”。
*/
div{
    margin: 10px;
    padding: 5px;
}
#father{
    border: 1px #000 solid;
    height: 2000px;
}
.div1{
    border: 1px #F00 dashed;
    display: inline-block;
    float: right;
}
.div2{
    border: 1px #00F dashed;
    display: inline-block;
    float: right;
}
.div3{
    border: 1px #0F0 dashed;
    display: inline-block;
    float: right;
}
.div4{
    border: 1px red dashed;
    font-size: 15px;
    line-height: 30px;
    display: inline-block;
    float: right;
}

18.2、解决方案2:增加一个空的DIV标签清除浮动

写法简单,但代码中应尽量避免使用空DIV标签

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>增加一个空的DIV标签清除浮动</title>
  <link rel="stylesheet" href="../../../css/增加一个空的DIV标签清除浮动.css" type="text/css">
</head>
<body>
<div id="father">
  <div class="div1"><img src="../../../resources/images/20210915002.bmp" alt=""></div>
  <div class="div2"><img src="../../../resources/images/20210915003.png" alt=""></div>
  <div class="div3"><img src="../../../resources/images/20210915004.png" alt=""></div>
  <div class="div4">
    浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止。
  </div>
  <div class="clear"></div>
</div>
</body>
</html>

其CSS示例代码,如下所示

/*display:显示其值为“block”时代表“显示块元素”;其值为“inline”时代表“显示行内元素”;其值为“inline-block”时代表“显示行内块元素”;其值为“none”时代表“不显示元素”。float:浮动其值为“left”时代表“向左浮动”;其值为“right”时代表“向右浮动”;其值为“none”时代表“不浮动”。clear:清除浮动其值为“left”时代表“清除向左浮动”;其值为“right”时代表“清除向右浮动”;其值为“both”时代表“清除向左与向右浮动”;其值为“none”时代表“不清除浮动”。*/div{    margin: 10px;    padding: 5px;}#father{    border: 1px #000 solid;}.div1{    border: 1px #F00 dashed;    display: inline-block;    float: right;}.div2{    border: 1px #00F dashed;    display: inline-block;    float: right;}.div3{    border: 1px #0F0 dashed;    display: inline-block;    float: right;}.div4{    border: 1px red dashed;    font-size: 15px;    line-height: 30px;    display: inline-block;    float: right;}.clear{    clear: both;    margin: 0;    padding: 0;}

18.3、解决方案3:使用OverFlow

写法简单,但应避免在下拉的一些场景中使用

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用OverFlow</title>
  <link rel="stylesheet" href="../../../css/使用OverFlow.css" type="text/css">
</head>
<body>
<div id="father">
  <div class="div1"><img src="../../../resources/images/20210915002.bmp" alt=""></div>
  <div class="div2"><img src="../../../resources/images/20210915003.png" alt=""></div>
  <div class="div3"><img src="../../../resources/images/20210915004.png" alt=""></div>
  <div class="div4">
    浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止。
  </div>
</div>
</body>
</html>

其CSS示例代码,如下所示

/*
display:显示
其值为“block”时代表“显示块元素”;
其值为“inline”时代表“显示行内元素”;
其值为“inline-block”时代表“显示行内块元素”;
其值为“none”时代表“不显示元素”。
float:浮动
其值为“left”时代表“向左浮动”;
其值为“right”时代表“向右浮动”;
其值为“none”时代表“不浮动”。
overflow:控制内容溢出元素框时在对应的元素区间内添加滚动条。
其值为“visible”时代表“默认值,内容不会被修剪,会呈现在元素框之外”;
其值为“hidden”时代表“内容会被修剪,并且其余内容是不可见的”;
其值为“scroll”时代表“内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容”;
其值为“auto”时代表“如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容”。
其值为“inherit”时代表“规定应该从父元素继承overflow属性的值”。
*/
div{
    margin: 10px;
    padding: 5px;
}
#father{
    border: 1px #000 solid;
    overflow: hidden;
}
.div1{
    border: 1px #F00 dashed;
    display: inline-block;
    float: right;
}
.div2{
    border: 1px #00F dashed;
    display: inline-block;
    float: right;
}
.div3{
    border: 1px #0F0 dashed;
    display: inline-block;
    float: right;
}
.div4{
    border: 1px red dashed;
    font-size: 15px;
    line-height: 30px;
    display: inline-block;
    float: right;
}

18.4、解决方案4:为父级添加一个伪类(After)

写法较复杂,但无副作用,推荐使用

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>为父级添加一个伪类</title>
  <link rel="stylesheet" href="../../../css/为父级添加一个伪类.css" type="text/css">
</head>
<body>
<div id="father">
  <div class="div1"><img src="../../../resources/images/20210915002.bmp" alt=""></div>
  <div class="div2"><img src="../../../resources/images/20210915003.png" alt=""></div>
  <div class="div3"><img src="../../../resources/images/20210915004.png" alt=""></div>
  <div class="div4">
    浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止。
  </div>
</div>
</body>
</html>

其CSS示例代码,如下所示

/*
display:显示
其值为“block”时代表“显示块元素”;
其值为“inline”时代表“显示行内元素”;
其值为“inline-block”时代表“显示行内块元素”;
其值为“none”时代表“不显示元素”。
float:浮动
其值为“left”时代表“向左浮动”;
其值为“right”时代表“向右浮动”;
其值为“none”时代表“不浮动”。
*/
div{
    margin: 10px;
    padding: 5px;
}
#father{
    border: 1px #000 solid;
}
#father:after{
    /*content: '';*/
    content: "";
    display: block;
    clear: both;
}
.div1{
    border: 1px #F00 dashed;
    display: inline-block;
    float: right;
}
.div2{
    border: 1px #00F dashed;
    display: inline-block;
    float: right;
}
.div3{
    border: 1px #0F0 dashed;
    display: inline-block;
    float: right;
}
.div4{
    border: 1px red dashed;
    font-size: 15px;
    line-height: 30px;
    display: inline-block;
    float: right;
}

19、CSS相对定位(CSS Relative Position)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS相对定位</title>
    <!--
    position:定位
    其值为“absolute”时代表“生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。”;
    其值为“fixed”时代表“生成绝对定位的元素,相对于浏览器窗口进行定位”;
    其值为“relative”时代表“生成相对定位的元素,相对于其正常位置进行定位”。
    其值为“static”时代表“默认值,没有定位,元素出现在正常的流中(忽略top,bottom,left,right或者z-index声明)”。
    其值为“inherit”时代表“规定应该从父元素继承 position 属性的值”。
    -->
    <style>
        #box{
            width: 300px;
            height: 300px;
            padding: 10px;
            border: 2px solid red;
        }
        a{
            width: 100px;
            height: 100px;
            text-decoration: none;
            background: pink;
            line-height: 100px;
            text-align: center;
            color: white;
            display: block;
        }
        a:hover{
            background: blue;
        }
        .a2,.a4{
            position: relative;
            left: 200px;
            top: -100px;
        }
        .a5{
            position: relative;
            left: 100px;
            top: -300px;
        }
    </style>
</head>
<body>
<div id="box">
    <a href="#" class="a1">链接1</a>
    <a href="#" class="a2">链接2</a>
    <a href="#" class="a3">链接3</a>
    <a href="#" class="a4">链接4</a>
    <a href="#" class="a5">链接5</a>
</div>
</body>
</html>

20、CSS绝对定位与固定定位(CSS Absolute Position And Fixed Position)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS绝对定位与固定定位</title>
    <style>
        body{
            height: 1000px;
        }
        div:nth-of-type(1){/*absolute:绝对定位,相对于浏览器*/
            width: 100px;
            height: 100px;
            background: red;
            position: absolute;
            right: 0;
            bottom: 0;
        }
        div:nth-of-type(2){/*fixed:固定定位*/
            width: 50px;
            height: 50px;
            background: yellow;
            position: fixed;
            right: 0;
            bottom: 0;
        }
    </style>
</head>
<body>
<div>div1</div>
<div>div2</div>
</body>
</html>

21、CSS层叠级别及透明度(CSS Cascade Level And Transparency)

其HTML示例代码,如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS层叠级别及透明度</title>
  <link rel="stylesheet" href="../../css/CSS层叠级别及透明度.css" type="text/css">
</head>
<body>
<div id="content">
  <ul>
    <li><img src="../../resources/images/20210916002.png" alt=""></li>
    <li class="tipText">电影《长津湖》</li>
    <li class="tipBG"></li>
    <li class="tipDT">时间:2021-10-01</li>
    <li class="tipAddr">地点:天下第一电影院</li>
  </ul>
</div>
</body>
</html>

其CSS示例代码,如下所示

#content{
    width: 316px;
    height: 400px;
    margin: 0px;
    padding: 0px;
    overflow: hidden;
    font-size: 15px;
    line-height: 25px;
    border: 1px solid black;
}
ul,li{
    margin: 0px;
    padding: 0px;
    list-style: none;
    text-align: center;
}
#content ul{
    position: relative;
}
.tipText,.tipBG{
    position: absolute;
    width: 316px;
    height: 25px;
    top: 322px;
}
.tipText{
    color: red;
    /*z-index: 0;!*层叠级别或图层,一般数值越大代表显示优先级越高(如999)*!*/
}
.tipBG{
    background: black;
    opacity: 0.5;/*透明度*/
    /*filter: alpha(opacity=50);*/
}
.tipDT,.tipAddr{
    position: relative;
    top: 25px;
}

22、CSS动画及视野扩展(CSS Animation And Visual Field Expansion)

参考资料网址:菜鸟教程canvas动画卡巴斯基-全球实时网络攻击互动地图

23、CSS美化网页元素的目的(CSS Beautify Web Page Elements Purpose)

  • 24.1、有效的传递页面信息
  • 24.2、美化页面,使页面更漂亮,才能更吸引用户
  • 24.3、凸显页面的主题
  • 24.4、提高用户的体验

参考资料(Reference Data):CSSDIV

学习网站地址(即"学习网址",Learning Website Address):Java之CSS3详解

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值