走进 CSS

news2024/9/22 1:44:36

看完本篇博客,你能收获:

  • 👉 了解 CSS 是什么?
  • 👉 学会 CSS 怎么用?
  • 👉 CSS的选择器
  • 👉 如何用 CSS 美化网页

文章目录

  • 01 CSS 是什么?
  • 02 CSS的发展史
  • 03 CSS 快速入门
  • 04 CSS的3种导入方式(使用方式)
  • 05 选择器 👇
      • 基本选择器:
        • 1. 标签选择器(\):
        • 2. 类选择器:
        • 3. id 选择器:
      • 层次选择器:
        • 1. 后代选择器
        • 2. 子选择器
        • 3. 相邻兄弟选择器
        • 4. 通用选择器
      • 结构伪类选择器:
      • 属性选择器 (常用 ※):
  • 06 网页美化
    • 👉 字体样式
    • 👉 文本样式
    • 👉 超链接伪类(悬浮效果)
    • 👉 列表样式
    • 👉 背景图像及渐变
  • 07 盒子模型
      • 👉 什么是盒子模型?
      • 👉 边框 border
      • 👉 外边距&内边距 margin&padding
      • 👉 圆角边框
      • 👉 阴影
  • 08 浮动
  • 09 定位
    • 👉 相对定位 relative
    • 👉 绝对定位 absolute
    • 👉 固定定位 fixed
    • 👉 z - index
  • 10 动画
  • >>> 开发技巧 <<<


01 CSS 是什么?

👉 Cascading Style Sheet ( 层叠级联样式表 )

CSS可以干什么?

  • 美化网页
  • 字体、颜色、边距、高度宽度、背景图片、网页定位

在这里插入图片描述


02 CSS的发展史

CSS(Cascading Style Sheets,层叠样式表)是一种将表示样式应用到标记的系统。CSS以设计、改变其HTML页面的样式而知名,并使用于Web和其他媒介,如XML文档中。1996年12月W3C推出了CSS规范的第一个版本,1998年W3C发布了CSS的第二个版本即CSS2.0,2001年5月W3C开始进行CSS3标准的制定,到目前为止该标准还没有最终定稿。

👉CSS 发展历程
CSS 1.01996年12月W3C推出了CSS规范的第一个版本
CSS 2.0div 块+CSS,HTML与CSS结构分离的思想,网页变得简单,方便SEO
CSS 2.1浮动,定位
CSS 3.0圆角,阴影、动画…浏览器兼容性

03 CSS 快速入门

(一个文件)在 HTML代码中插入 style标签 写CSS代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS快速入门</title>
    
    <!--规范 在head里<style>写CSS代码,每一个声明最好使用分号结尾;
    语法:
            选择器{
                声明1;
                声明2;
                声明3;
            }
    -->
    <style>
        h1{
            color: red;
        }
    </style>
    
</head>
<body>

	<h1>标题</h1>

</body>
</html>

在这里插入图片描述

  • 但实际开发中,多把 HTML 和 CSS 分离

(两个文件)只需在HTML代码中使用 link 标签,然后指向 CSS 文件:

在这里插入图片描述效果也是一样的,但更建议使用这种方式( HTML + CSS 分离)

CSS的优势:

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

04 CSS的3种导入方式(使用方式)

  • 外部样式:link 标签(HTML文件+CSS文件);
  • 内部样式:style 标签;
  • 行内样式:在标签元素中加入一个 style 属性
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS的3种导入方式</title>

<!--内部样式:style标签-->
  <style>
    h1{
      color: blue;
    }
    /* 注释要这样写,因为这部分是CSS代码 */
  </style>

<!--外部样式:指向独立于html的style.css文件-->
  <link rel="stylesheet" href="style.css">
</head>
<body>

  <!--优先级:就近原则,谁靠近元素的代码就显示谁的-->

<!--行内样式:在标签元素中,加入一个style属性-->
<h1 style="color: red"></h1>  <!--不符合结构分离,不建议使用-->

</body>
</html>

拓展:外部样式有两种写法

  • 链接式:link 标签;
<!--外部样式:指向独立于html的style.css文件-->
<link rel="stylesheet" href="style.css">
  • 导入式(CSS 2.1 特有):
<style>
       @import url("style.css");
</style>

link 和 import 之间的区别?

 
差别 1:

  • 本质的差别:link 属于 XHTML 标签,而 @import 完全是 CSS 提供的一种方式。

差别 2:

  • 加载顺序的差别: 当一个页面被加载的时候(就是被浏览者浏览的时候) ,link 引用的 CSS 会同时被加载,而 @import 引用的CSS 会等到页面全部被下载完再被加载。所以有时候浏览 @import 加载 CSS
    的页面时开始会没有样式(就是闪烁),网速慢的时候还挺明显。

差别 3:

  • 兼容性的差别: @import 是 CSS2.1 提出的,所以老的浏览器不支持,@import 只有在 IE5 以上的才能识别,而 link标签无此问题。

差别 4:

  • 使用 dom(document object model文档对象模型 )控制样式时的差别:当使用 javascript 控制 dom
    去改变样式的时候,只能使用 link 标签,因为@import 不是 dom 可以控制的。

05 选择器 👇

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

基本选择器:

1. 标签选择器(<style> </style>):

  • 选择一类标签
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>基本选择器</title>

  <style>
    /* 标签选择器,会选择到页面上所有的这个标签 */
    h1{
      color: orange;
      background: aquamarine;
      border-radius: 20px;
    }
    p{
      font-size:100px;
    }
  </style>

</head>
<body>

<h1>HTML</h1>
<h1>CSS</h1>
<h1>JavaScript</h1>
<p>OK</p>

</body>
</html>

在这里插入图片描述

2. 类选择器:

  • 选种所有 class 属性的标签(可跨标签)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>类选择器</title>

  <style>
    /* 类选择器格式 .class的名称{} */
    .No1{
      color:blue;
    }
    .No2{
      color:green;
    }
    .No3{
      color:red;
    }
  </style>

</head>
<body>

<h1 class="No1">No.1</h1>
<h1 class="No2">No.2</h1>
<p class="No3">No.3</p>

</body>
</html>

可以不同类型的多个标签归类,实现同一效果
在这里插入图片描述

3. id 选择器:

  • id 全局唯一,不可重复
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>id选择器</title>

  <style>
    /* id选择器:id必须唯一,不可复用
      #id名称{}
      优先级:不遵循就近原则
      id选择器>class选择器>标签选择器
     */
    #miao{
      color: pink;
    }
    #ban{
      color:purple;
    }
    #li{
      color: cyan;
    }
    h1{
      color:red;
    }
  </style>

</head>
<body>

<h1 id="miao">标题1</h1>
<h1 id="ban">标题2</h1>
<h1 id="li">标题3</h1>

</body>
</html>

显示优先级:id > class > 标签

在这里插入图片描述


层次选择器:

如果想实现如下层次图中的某个层次,可以考虑以下选择器
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>层次选择器</title>

  <style>
    /*后代选择器*/
    body p{
      background: yellow;
    }
    /*子选择器*/
    body>p{
      background: cyan;
    }
    /*相邻兄弟选择器*/
    .brother+p{
      background: cadetblue;
    }
    /*通用选择器:当前选中元素的向下的所有兄弟元素*/
    .active~p{
      background: orange;
    }
  </style>

</head>
<body>

  <p >p1</p>
  <p class="brother">p2</p>
  <p class="active">p3</p>
  <p >p4</p>
  <p >p5</p>
  <ul>
    <li>
      <p>p4</p>
    </li>
    <li>
      <p>p5</p>
    </li>
    <li>
      <p>p6</p>
    </li>
  </ul>

</body>
</html>

1. 后代选择器

  • 在某个元素的后面,( 祖爷爷 爷爷 爸爸 儿子 都有 )
/*后代选择器*/
body p{
   background: yellow;
}

在这里插入图片描述

2. 子选择器

  • 一代,( 只有 儿子 有 )
/*子选择器*/
body>p{
  background: cyan;
}

在这里插入图片描述

3. 相邻兄弟选择器

  • 同辈都有,对下不对上(只对代码之下的有用)
/*相邻兄弟选择器:只有一个,相邻(向下)*/
.brother + p{
  background: cadetblue;
}

在这里插入图片描述

4. 通用选择器

  • 通用兄弟选择器:当前选中元素的向下所有兄弟元素
/*通用选择器:当前选中元素的向下的所有兄弟元素*/
.active ~ p{
  background: orange;
}

在这里插入图片描述


结构伪类选择器:

标签 + 冒号 : 以构成 伪类 选择器:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>结构伪类选择器</title>

  <style>
    /*不用class和id选择器怎么实现:*/
    /*ul第一个子元素*/
    ul li:first-child{
      background: green;
    }
    /*ul最后一个子元素*/
    ul li:last-child{
      background: yellow;
    }
    /*选中p1:定位到父元素,选择当前第一个元素*/
    /*选中当前p元素的父级元素,选中父级元素的第一个,并且是当前元素才生效*/
    p:nth-child(1){
      background: blue;
    }
    /*选中父元素,下的p元素的第二个*/
    p:nth-of-type(2){
      background: orange;
    }
    /*鼠标移到上面就变色*/
    ul:hover{
      background: red;
    }
  </style>
</head>
<body>

  <p>p1</p>
  <p>p2</p>
  <p>p3</p>
  <ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
  </ul>

</body>
</html>

在这里插入图片描述

鼠标移到上面变色: 在这里插入图片描述


属性选择器 (常用 ※):

id 和 class 结合起来的选择器,支持正则表达式,日常开发中最常用

属性选择器:(支持正则表达式)

    标签[属性名=属性值]{}
    
    = 绝对等于
    *= 包含这个元素 (通配符)
    ^= 开头等于
    $= 结尾等于

完整代码:(下文有解读)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>属性选择器</title>
  <style>
    .demo a{
      float:left;/*往左浮动*/
      display:block;/*以盒子显示*/
      height: 50px;/*长宽高一致*/
      width: 50px;/*正方形*/
      border-radius: 10px;/*圆角*/
      background:pink;/*背景颜色*/
      text-align: center;/*居中对齐*/
      color:purple;/*字体颜色*/
      text-decoration: none;/*去掉下划线*/
      margin-right: 10px;/*间距*/
      font:bold 20px/50px Arial;
      /*   粗体 字体大小/行高 字体*/
    }

    /*属性选择器:(支持正则表达式)
    标签[属性名=属性值]{}
    = 绝对等于
    *= 包含这个元素 (通配符)
    ^= 开头等于
    $= 结尾等于
    */

    /*存在id属性的元素*/
    a[id]{}

    /*id等于first的元素*/
    a[id=first]{}

    /*class中有links的元素*/
    a[class*="links"]{}
    
    /*选中href中以https开头的元素*/
    a[href^="https"]{}
    
    /*选中href中以pdf结尾的元素*/
    a[href$=pdf]{}
    
  </style>
</head>
<body>

<p class="demo">

  <a href="https://www.baidu.com" class="links item first" target="_blank">1</a>
  <a href="https://www.csdn.net" class="links item active" id="first" title="test">2</a>
  <a href="image/123.html" class="links item">3</a>
  <a href="image/123.png" class="links item">4</a>
  <a href="image/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.docx" class="links item">8</a>
  <a href="abc" class="links item last">9</a>

</p>

</body>
</html>

代码解读:

  1. 构建数字块图
<style>
  .demo a{
    float:left;/*往左浮动*/
    display:block;/*以盒子显示*/
    height: 50px;/*长宽高一致*/
    width: 50px;/*正方形*/
    border-radius: 10px;/*圆角*/
    background:pink;/*背景颜色*/
    text-align: center;/*居中对齐*/
    color:purple;/*字体颜色*/
    text-decoration: none;/*去掉下划线*/
    margin-right: 10px;/*间距*/
    font:bold 20px/50px Arial;
    /*   粗体 字体大小/行高 字体*/
  }
</style>

效果如下:
在这里插入图片描述


  1. 选中 存在 id 属性 的元素
/*存在id属性的元素*/
a[id]{
  background: cyan;
}

在这里插入图片描述


  1. 选中 id 等于 first 的元素
/*id等于first的元素*/
a[id=first]{
  background: cyan;
}

在这里插入图片描述


  1. 选中 class 中有 links 的元素
/*class中有links的元素*/
a[class*="links"]{
  background: cyan;
}

在这里插入图片描述


  1. 选中href中以https开头的元素
/*选中href中以https开头的元素*/
a[href^="https"]{
  background: cyan;
}

在这里插入图片描述


  1. 选中href中以pdf结尾的元素
/*选中href中以pdf结尾的元素*/
a[href$=pdf]{
  background:cyan;
}

在这里插入图片描述

 =   绝对等于
*=   包含这个元素 (通配符)
^=   开头等于
$=   结尾等于


06 网页美化

为什么要美化网页?

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

👉 字体样式

font:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>字体样式</title>
<!--
    font-family:字体
    font-size:字体大小
    font-weight:字体粗细
    color:字体颜色
    -->
  <style>
    body{
        font-family: "Arial",宋体;/*可以设置两种字体,针对英文和中文*/
        color:purple;
    }
    h1{
        font-size:40px;/*还有em(缩进)*/
    }
    .p1{
        font-weight:bolder;/*可以数字*/
    }
    p[id="123"]{
        font:oblique bolder 16px "Arial";
        /*    斜体    加粗   大小   字体 */
    }
  </style>
</head>
<body>
<h1>CSS是什么?</h1>
<p class="p1">
CSS(Cascading Style Sheets,层叠样式表)是一种将表示样式应用到标记的系统。CSS以设计、改变其HTML页面的样式而知名,并使用于Web和其他媒介,如XML文档中。</p>
<p>
1996年12月W3C推出了CSS规范的第一个版本,1998年W3C发布了CSS的第二个版本即CSS2.0,2001年5月W3C开始进行CSS3标准的制定,到目前为止该标准还没有最终定稿。
</p>
<p id="123">
W3C:World Wide Web Consortium
</p>
</body>
</html>

效果如下:
在这里插入图片描述


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

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

  <style>
    #title1{
      font-size:50px
    }
  </style>

</head>
<body>

欢迎学习<span id="title1">Java</span>

</body>
</html>

效果如下:

在这里插入图片描述


👉 文本样式

  1. 颜色:color rgb rgba
  2. 文本对齐方式:text - align center
  3. 首行缩进 text - indent : 2em
  4. 行高:line - height :
  5. 装饰 : text - decoration
  6. 文本图片水平对齐 : vertical - align : middle
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文本样式</title>

  <style>
    h1{
        color:rgba(0,255,255,0.8);/* 颜色:RGB和透明度% */
        text-align:center;/* 排版:居中 */
    }
    .p1{
        text-indent:2em;/* 段落首行缩进 2字符 */
    }
    #eng{
        background: pink;
        height:66px;
        line-height:66px;/*行高(行高和块高一致就能上下居中)*/
    }
    /*下划线*/
    .p2{
        text-decoration: underline;
    }
    /*中划线*/
    .p3{
        text-decoration: line-through;
    }
    /*上划线*/
    .p4{
        text-decoration: overline;
    }
    /* a标签默认下划线 可以去掉 */
    a{
        text-decoration-line:none;
    }
  </style>

</head>
<body>

<h1>CSS是什么?</h1>
<p class="p1">
CSS(Cascading Style Sheets,层叠样式表)是一种将表示样式应用到标记的系统。CSS以设计、改变其HTML页面的样式而知名,并使用于Web和其他媒介,如XML文档中。</p>
<p>
1996年12月W3C推出了CSS规范的第一个版本,1998年W3C发布了CSS的第二个版本即CSS2.0,2001年5月W3C开始进行CSS3标准的制定,到目前为止该标准还没有最终定稿。
</p>
<p id="eng">
W3C:World Wide Web Consortium
</p>
<p class="p2">miaobanli</p>
<p class="p3">miaobanli</p>
<p class="p4">miaobanli</p>
<a href="https://www.csdn.net">超链接</a>

</body>
</html>

效果如下:
在这里插入图片描述

文本阴影:https://www.w3school.com.cn/css/css_text_shadow.asp

a{
	text-shadow:#3cc7f2 10px 10px 10px;
	/*  阴影颜色 水平偏移 垂直偏移 阴影半径 */
}

👉 超链接伪类(悬浮效果)

a:hover { }

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>超链接伪类</title>

    <style>
        /*默认的颜色*/
        a{
            text-decoration:none;
            color:black;
        }
        /*鼠标悬浮的颜色*/
        a:hover{
            color:orange;
        }
    </style>

</head>
<body>

<a href="">
    <img src="img.png" alt="">
</a>
<p>
    <a href="">CSDN</a>
</p>
<p>
    <a href="">苗半里</a>
</p>

</body>
</html>

鼠标悬浮(未点击) 及 鼠标点击(未释放)效果
在这里插入图片描述在这里插入图片描述


👉 列表样式

初始样式:
在这里插入图片描述
HTML :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>列表样式</title>
    <link href="style.css" rel="stylesheet" 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:230px;
    background: gray;
}
.title{
    font-size:18px;
    font-weight:bold;
    text-indent:1em;
    line-height:35px;
    background: indianred;
}
/* list-style:
none 去掉原点
circle 空心圆
decimal 数字
square 正方形
 */
ul{
    background:gray ;
}
ul li{
    height:30px;
    list-style:none;
}
a{
    text-decoration:none;
    font-size:14px;
    color:black;
}
a:hover{
    color:orange;
    text-decoration: underline;
}

HTML + CSS 修改后:

在这里插入图片描述


👉 背景图像及渐变

图像背景:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>图片背景</title>
    <style>
        div{
            width:500px;
            height:300px;
            border:5px solid cyan;
            /*边框  粗细 实线  颜色*/
            background-image:url("img.png");/*默认是全部平铺的*/
        }
        .div1{
            background-repeat: repeat-y;/*y轴平铺*/
        }
        .div2{
            background-repeat:repeat-x;/*x轴平铺*/
        }
        .div3{
            background-repeat:no-repeat;/*不平铺 就一个*/
        }
        .div4{
            background: pink url("img.png") 150px 60px no-repeat;
            /*          颜色     背景图片        定位     平铺方式 */
        }
        .div5{  /* 也可以这样操作 */
            background:mediumpurple;
            background-image: url("img.png");
            background-position:150px 60px;
            background-repeat: no-repeat;
        }
    </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>

在这里插入图片描述

在这里插入图片描述


渐变:

background-color: #4158D0;
background-image: linear-gradient(43deg, #4158D0 0%, #C850C0 46%, #FFCC70 100%);

在这里插入图片描述

👉 可以从这个 网站 https://www.grabient.com里面调样式复制 CSS 代码
在这里插入图片描述




07 盒子模型

👉 什么是盒子模型?

  • 我们在查看网页源代码(在一个页面点击检查)时,总能发现如下图这样一个"盒子"

在这里插入图片描述
  margin : 外边距
padding : 内边距
  border : 边框

盒子大小 = margin + border + padding + 内容宽度

👉 边框 border

  1. 边框的粗细
  2. 边框的样式
  3. 边框的颜色
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    body{
      /*body总有一个默认的外边距*/
      margin:0;
    }
    #box{
      width:300px;
      border:1px solid purple;
      /*     粗细  样式  颜色 */
    }
    h2{
      font-size:16px;
      background-color:gray;
      line-height:30px;
      color:white;
      text-align:center;
    }
    form{
      background: pink;
    }
    div:nth-of-type(1)>input{
      border:3px solid gray;
    }
    div:nth-of-type(2) input{
      border:3px dashed gray;
    }
  </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>

效果如图:
在这里插入图片描述


👉 外边距&内边距 margin&padding

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--  外边距的妙用:居中元素
前提条件:块元素有固定的宽度-->
    <style>
        body{
            /*body总有一个默认的外边距*/
            margin:0;
        }
        #box{
            width:300px;
            border:1px solid purple;
            /*     粗细  样式  颜色 */

            /*外边距妙用:居中*/
            margin:0 auto;
        }
        h2{
            font-size:16px;
            background-color:gray;
            line-height:30px;
            color:white;
            text-align:center;
            margin-top:0;
            margin-bottom:0;
            /*也可以这样:
            margin:0 0 0 0 ;
                  上 右 下 左 (顺时针旋转)
            margin: 0  0 ;
                  上下 左右
            */
        }
        form{
            background: pink;
        }
        input{
            border:1px solid black;
        }
        div:nth-of-type(1){
            padding: 10px 5px;
        }
    </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>

在这里插入图片描述


👉 圆角边框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    div {
        width: 100px;
        height: 100px;
        border: 10px solid pink;
        border-radius: 50px 20px 10px 5px;
    }
      /*             左上 右上 右下 左下 (顺时针方向)*/
      /* border-radius: 50px 20px;
                     左上右下 右上左下 (两对角)
       border-radius:50px; 是个圆  */
      img{
        border-radius:77px;
        /*把图片变为圆形*/
      }
  </style>
</head>
<body>
<div></div>
<img src="img.png" alt="">
</body>
</html>

效果如图:
在这里插入图片描述


👉 阴影

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    div{
      width:100px;
      height:100px;
      border:10px solid purple;
      box-shadow:10px 10px 100px deeppink;
    }
    img{
      margin:100px;
      border-radius:30px;
      box-shadow:10px 10px 100px yellow;
    }
  </style>
</head>
<body>
<div></div>
<img src="img.png" alt="">
</body>
</html>

在这里插入图片描述


08 浮动

display :方向不可控制
    float :   浮动起来可能会脱离标准文档流,要解决父级边框塌陷问题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <style>
    /* display:
    block:块元素
    inline:行内元素
    inline-block:是块元素,但是可以内联,在一行内
    */
    div{
      width:100px;
      height:100px;
      border:1px solid purple;
      display:inline;
    }
    span{
      width:100px;
      height:100px;
      border:1px solid pink;
      display:inline-block;
    }
  </style>
</head>
<body>
<div>div块元素</div>
<span>span行内元素</span>
</body>
</html>

在这里插入图片描述

<style>
  /* display:
  block:块元素
  inline:行内元素
  inline-block:是块元素,但是可以内联,在一行内
  */
  div{
    width:100px;
    height:100px;
    border:1px solid purple;
    display:inline;
    float:right; /* 加了浮动 */
  }
  span{
    width:100px;
    height:100px;
    border:1px solid pink;
    display:inline-block;
    float:right;

  }
</style>

在这里插入图片描述

如果有父级边框塌陷问题:比如设置了浮动以后,只有浮动元素,而原来的块元素收缩了,可以增加 clear:

clear : right ; 右侧不允许有浮动元素
clear : left ; 左侧不允许有浮动元素
clear : both ; 两侧不允许有浮动元素
clear : none ; 允许有浮动

解决方案:

  1. 增加父级元素的高度(不建议);
  2. 增加一个空的 div 标签 然后清除浮动;
  3. overflow 在父级元素被中增加一个 overflow 属性
overflow : hidden; 超出规定大小后就隐藏
overflow : scroll; 超出规定大小就有滚动条,自动溢出
overflow : auto;
  1. 父类添加一个伪类 after (推荐)
father:after{
	content:'';
	display:block;
	clear:both;
}

09 定位

👉 相对定位 relative

  • 相对于自己原来的位置进行偏移
    • position : relative
    • top : -20px;
    • left : 20px;
    • bottom : -10px;
    • right : 20px;
  • 原来位置会被保留
<!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;
    }
    #first{
      background: yellow;
      border:1px solid #5f80bd;
      position:relative;/*相对定位:上下左右*/
      top:-20px;
      left:20px;
      bottom:10px;/*离底部的距离*/
    }
    #second{
      background: lightblue;
      border:1px solid #3cac40;
    }
    #third{
      background:pink;
      border:1px solid #cc83ad;

    }
  </style>
</head>
<body>
<div id="father">
  <div id="first">第一个盒子</div>
  <div id="second">第二个盒子</div>
  <div id="third">第三个盒子</div>
</div>
</body>
</html>

原来是这样:
在这里插入图片描述
相对位移后:
在这里插入图片描述

👉 绝对定位 absolute

  • 基于 XXX 定位 ,上下左右位移
    • position : absolute

    • top : -20px;

    • left : 20px;

    • bottom : -10px;

    • right : 20px;

  1. 没有父级元素定位时,相对于浏览器定位;
  2. 假设父级元素存在定位,通常会相对父级元素进行位移;
  3. 原来位置不会被保留
<style>
  div{
    margin:10px;
    padding:5px;
    font-size:12px;
    line-height: 25px;
  }
  #father{
    border:1px solid #666;
  }
  #first{
    background: yellow;
    border:1px solid #5f80bd;
    position:absolute; /*绝对定位*/ 
    right:30px;
  }
  #second{
    background: lightblue;
    border:1px solid #3cac40;
  }
  #third{
    background:pink;
    border:1px solid #cc83ad;
  }
</style>

在这里插入图片描述

👉 固定定位 fixed

固定在网页的某个位置,即使滚动条滚动,也始终保持在原来的位置

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

绿色的块是绝对定位,滚动条一滑就跟着跑了
粉色的是固定定位,即使滚动条滑了,也是固定在右下角不动的
在这里插入图片描述


👉 z - index

  • z-index 属性指定一个元素的堆叠顺序。

  • 拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。

  • z-index 默认是 0

使用前提:

(1)必须在定位元素(position:relative/absolute/fixed/sticky)上才有效

(2) 可以有负值

(3)不同父元素的子元素之间进行显示时,会根据父级元素的z-index进行渲染.

在这里插入图片描述

z-index不起作用的几种情形:

  1. 当前设置z-index元素的父元素 position:relative/absolute;

  2. 当前设置z-index元素为浮动元素。

示例:文字及背景悬浮在图片之上:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #content{
            width:410px;
            height:139px;
            padding:0;
            margin:0;
            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;
        }
        .tipText,.tipBackground{
            position:absolute;
            width:410px;
            height:20px;
            top:119px;
        }
        .tipText{
            color:yellow;
            font-weight:bolder;
            text-align: center;
            z-index:3;
        }
        .tipBackground{
            background: white;
            opacity: 0.3;/*透明度*/
            /*也可以这样:
            filter:Alpha(opacity=30);
            */
        }
    </style>
</head>
<body>
<div id="content">
    <ul>
        <li><img src="img.png" alt=""></li>
        <li class="tipText">大展宏兔</li>
        <li class="tipBackground"></li>
    </ul>
</div>
</body>
</html>

👉 更多详细介绍

10 动画

https://www.runoob.com/css3/css3-animations.html
https://www.html5tricks.com/tag/css3动画/


>>> 开发技巧 <<<

👉 CSS-菜鸟教程

如果看到比较好看的页面想要模仿,可以保存网页源码来仿照着写;
也可以网上搜索一些源码仿照 (源码之家 模板之家等)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

唯一索引范围查询锁 bug修复了

唯一索引范围查询锁 bug修复了 其他资料介绍入下&#xff1a; session A 是一个范围查询&#xff0c;按照原则 1 的话&#xff0c;应该是索引 id 上只加 (10,15] 这个 next-key lock &#xff0c;并且因 为 id 是唯一键&#xff0c;所以循环判断到 id15 这一行就应该停止了。…

生成标题的节点

生成标题的节点目录概述需求&#xff1a;设计思路实现思路分析1.mine 的概述2 mi是否自动计算未来的处理人参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,w…

智能驾驶 车牌检测和识别(一)《CCPD车牌数据集》

智能驾驶 车牌检测和识别&#xff08;一&#xff09;《CCPD车牌数据集》 目录 智能驾驶 车牌检测和识别&#xff08;一&#xff09;《CCPD车牌数据集》 1. 前言 2.车牌号码说明 3.车牌数据集CCPD &#xff08;1&#xff09;车牌数据集CCPD说明 &#xff08;2&#xff09…

Eclipse调试python

Eclipse调试pythonF5&#xff1a;Step Into 单步调试&#xff0c;跳入函数内部F6&#xff1a;Step Over 单步调试&#xff0c;不跳入函数内部&#xff0c;执行当前代码F7&#xff1a;Step Return 返回到当前函数的尾部&#xff0c;跳转到调用函数的位置F8&#xff1a;Resume 跳…

DDOS渗透与攻防(二)之SYN-Flood攻击

系列文章 DDOS渗透与攻防(一)之拒绝服务攻击概念介绍 SYN-Flood攻击 1.SYN-Flood拒绝服务攻击 (1).攻击协议原理介绍说明_Syn-Flood SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service&#xff0c;拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽&#xff0c;停止响应…

8 种异步实现方式,性能炸裂!

异步执行对于开发者来说并不陌生&#xff0c;在实际的开发过程中&#xff0c;很多场景多会使用到异步&#xff0c;相比同步执行&#xff0c;异步可以大大缩短请求链路耗时时间&#xff0c;比如&#xff1a;发送短信、邮件、异步更新等&#xff0c;这些都是典型的可以通过异步实…

LeetCode动态规划经典题目(九):0-1背包问题

学习目标&#xff1a; 0-1背包问题 学习内容&#xff1a; 9. LeetCode416. 分割等和子集https://leetcode.cn/problems/partition-equal-subset-sum/ 10. LeetCode1049. 最后一块石头的重量 IIhttps://leetcode.cn/problems/last-stone-weight-ii/ 学习产出&#xff1a; 独…

Makefile学习⑦:编译动态链接库和静态库

Makefile学习⑦&#xff1a;编译动态库和静态库 编译链接动态库 动态链接库名词解释&#xff1a; 动态&#xff1a;运行时才去加载&#xff0c;动态加载 链接&#xff1a;指库文件和二进制程序分离&#xff0c;用某种特殊手段维护两者之间的关系 库 &#xff1a;库文件&#…

8、条件语句

目录 一、简单的if条件语句 二、if…else语句 三、if…else if多分支语句 四、switch多分支语句 一、简单的if条件语句 语法如下&#xff1a; 布尔表达式&#xff1a;必要参数&#xff0c;表示最后返回的结果必须是一个布尔值。它可以是一个单纯的布尔变量或常量&#xff…

IntelliJ IDEA 插件推荐

本篇主要统计了一些 Idea 的常用插件 分享一下 感谢作者zzp google-java-format 作用 代码格式化风格。 插件官网 google-java-format - plugin for IntelliJ IDEs | JetBrains 使用说明 插件安装完成后需要到Preferences->Other Settings->google-java-format Set…

供应商管理难点在哪 SRM供应商系统助推企业提升管理水平

在如今&#xff0c;对于需求企业来说&#xff0c;要保证企业内部的正常生产或科研工作等过程的不间断&#xff0c;就需要有一批可靠的供应商定期提供必需的物资供应。而供应商管理的最终目的就是根据采购需求来建立一个稳定可靠的供应商管理队伍&#xff0c;为企业提供高质量的…

【Leetcode每日一题】27. 原地移除元素|神级理解双指针

博主简介&#xff1a;努力学习的预备程序媛一枚~博主主页&#xff1a; 是瑶瑶子啦所属专栏: LeetCode每日一题–进击大厂 目录题目描述题目分析&#xff1a;代码实现补充训练--验证代码实现题目描述 链接: 27. 移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原…

Java开发实现图书管理系统

本文用Java代码实现图书代码管理系统&#xff0c;有些地方可能会有纰漏&#xff0c;希望各位大佬鉴赏&#xff01;&#xff01; 文章目录 文章目录 一、Java实现图书管理系统 1.1创建book包 二、创建图书管理系统的操作包 2.1创建Operation接口 三、创建User包 3.1创建User类 四…

并发编程学习(七):线程活跃性:死锁、活锁、饥饿

线程活跃性 是指代码有限&#xff0c;但由于某种原因&#xff0c;导致线程一直未执行完成。 1、死锁 指两个或两个以上的进程&#xff08;或线程&#xff09;在执行过程中&#xff0c;因争夺资源而造成的一种互相等待的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推…

四元数学习笔记(一):初识四元数

1 四元数的定义 1.1 为什么要使用四元数 旋转向量用 9 个量来描述 3 个自由度的旋转&#xff0c;具有冗余性&#xff1b;欧拉角和旋转向量是紧凑的&#xff0c;但是具有奇异性。事实上&#xff0c;我们找不到不带奇异性的向量描述方式。 回忆之前学习过的复数&#xff0c;我…

强化学习笔记:基于策略的学习之策略迭代(python实现)

目录 1. 前言 2. 算法流程 3. 代码及仿真结果 3.1 class PolicyIterationPlanner() 3.2 测试代码 3.3 运行结果 3.3.1 价值估计结果 3.3.2 策略迭代得到的最终策略 1. 前言 在强化学习中&#xff0c;根据是否依赖于&#xff08;环境的&#xff09;模型&#xff0c;可以分…

OAK相机与树莓派

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手…

机器人中的数值优化之修正阻尼牛顿法

本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 Newtons Method 2 Pratical Newtons Method 1 Newtons Method 当我们引入函数的二阶信息就考虑到了curvature info&#xff0c;这里先对函数进行泰勒展开&#xff0c;取二阶近似&#xff0c;对近似后的函数取最优解&#…

springboot 线程池

为什么要使用线程池 使用线程池之后&#xff0c;不需要频繁的去创建和销毁线程&#xff08;比如项目中手动创建线程&#xff0c;new Thread 类&#xff0c;我们可以把创建和销毁的线程的过程去掉&#xff09;&#xff0c;从而让线程得到重复的使用。并且可以对线程进行统一的管…

手把手教你用 Python 搭建一个图像分类器

深度学习是使用人工神经网络进行机器学习的一个子集&#xff0c;目前已经被证明在图像分类方面非常强大。 尽管这些算法的内部工作在数学上是严格的&#xff0c;但 Python 库(比如 keras)使这些问题对我们所有人都可以接近。 在本文中&#xff0c;我将介绍一个简单的图像分类…