HEML+CSS超详细基础知识

一些快捷键

ctrl+/  是注释

ctrl+d 是选中多个相同字

ctrl+s保存

alt+Z自动换行

alt+shift选中多行

HTML认知

基础认知

html初尝试

HTML页面结构介绍

初次尝试

开始动手写一个网页

先新建一个文件,记得后缀要命名成html

然后shift+!,就会自动生成一个框架,在这里面写代码就行

结果呈现

标签总介绍

标题标签

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- 用到了ctrl+d --><h1>1级标题</h1><h2>2级标题</h2><h3>3级标题</h3><h4>4级标题</h4><h5>5级标题</h5><h6>6级标题</h6>
</body>
</html>

段落标签

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><p>其起源可追溯至中世纪的教会音乐,当时的教会音乐只以人声清唱,并不应用乐器。音频示例:阿卡贝拉(意大利:Acappella)即无伴奏合唱。阿卡贝拉《千与千寻》</p><p>“翻唱”是指将已经发表并由他人演唱的歌曲根据自己的风格重新演唱,包括重新填词,编曲。现在已有不少明星,都在翻唱他人的歌,不断在翻唱中突破自己,给大家带来不一样的风格。视频示例:有一种悲价(翻唱)-《A Kind of Sorrow》</p></body>
</html>

换行标签

水平线标签

文本格式化标签(文字加粗等)

上图中,左边和右边的代码实现的功能是一样的,但可以根据语境来选择用哪一个。

如果比较重要的可以用右边的代码,即单词。

图片标签

下面我插入了一个火影忍者的动图。

"./"代表当前文件所在的目录。在这个例子中,"./Ninja.gif"指的是当前HTML文件所在目录下的"Ninja.gif"文件。(这边不加也行)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- alt是替换文本,当图片加载失败时会出现 --><!-- 可以同时设置width和height,但只设置其中一个会自动等比例匹配,所以一般只写一个就行 --><img src="./Ninja.gif" alt="这是佐助和鸣人" title="火影忍者" width="400">
</body>
</html>

路径介绍

./ 是当前文件夹

../是上一层文件夹

为什么相对路径比绝对路径更常用呢?

因为假如你写了一个网页,其中的某张图片是绝对路径。那么别人的电脑打开这个网页的时候,图片可能就没有了,因为你自己电脑上的绝对路径和别人电脑上的绝对路径是不一样的。

所以,绝对路径的使用场景就非常受限了。

同级目录的用法在上面用过,就不再赘述了

目标文件在下级。假设当前文件夹是a,包含目标文件的文件夹为b,那我们就要先进入b,然后再访问目标文件。

所以呢,访问当前文件夹是用“./”,那么访问其他文件夹就是  "文件夹名/"

../是返回上一级

音频标签

<body><!-- 如果不加controls就没法播放,因为没有控制器 --><audio src="./孔泽瀚 - 游戏音乐试听【飞机大战】.mp3" controls autoplay loop></audio>
</body>

视频标签

<body><video src="./WeChat_20231107150857.mp4" controls autoplay muted loop></video>
</body>

链接标签

<body><!-- 写上一个a,再回车 --><!-- href:网址 --><a href="https://blog.csdn.net/clmm_?spm=1010.2135.3001.5343" target="_blank">我的csdn</a><br><!-- 默认是self --><a href="./09-视频标签.html">视频标签</a><br><!-- 在开发初期的时候,不知道链接将会跳到哪里去,所以先写一个空链接 --><a href="#" target="_blank">空链接</a>
</body>

案例-招聘

<body><h1>腾讯科技高级web前端开发岗位</h1><hr><h2>职位描述</h2><p>负责重点项目的前端技术方案和架构的研发和维护工作;</p><h2>岗位要求</h2><p>5年以上前端开发经验,精通html5/css3/javascript等 web开发技术:熟悉bootstrap,vue,angularjs,reactjs等框架,熟练掌握一种以上,代码风格严谨,能高保真还原设计稿,能兼容各种浏览器,对web前端的性能优化以及web常见漏洞自一定的解和相关践:具备良好的分析解决问题能力,能独立承担任务,有开发进度把控力;责任心强,思路路洁晰,抗压能力好,旦备良好的对外沟通和团队协作能力</p><h2>工作地址</h2><p>上海市-徐汇区-腾云大厦</p><img src="./images/案例-上海地图.png" alt="">
</body>

案例-跳转

打网址回车后,看到的页面是首页,我们叫它index

以后做项目的时候,要把用到的东西都放在同一个文件。

包括素材和html文件

<body><h1>今日搜索热词</h1><hr><h2>1.火影忍者</h2><p>《火影忍者》是一部由日本漫画家岸本齐史创作的漫画作品,也被改编成了动画、电影、小说等形式。故事主要围绕着年轻的忍者奈良鸣人以及他的同伴们,在追求成为忍者村“火之国木叶隐村”的领袖——火影的过程中,经历了各种挑战、成长与友情。这部作品融合了忍者、战斗、友情、成长等元素,深受全球观众的喜爱。</p><a href="./Ninja.html" target="_blank">鸣人佐助打斗图</a><h2>2.人</h2><p>这是一个人</p><a href="./LinJin.html" target="_blank">一个人</a></body>

HTML基础

列表标签

无序列表

补充:去掉列表符号(就是前面的圆点)

有序列表

自定义列表

dd有自动缩进的效果,那我们要怎么美化呢?这个要在css学

表格标签

相关属性

实际开发是用css了,这个表格的属性太原始应该很少用到

<body><table border="2" width = 500 height = 300><tr><td>姓名</td><td>成绩</td><td>评语</td></tr><tr><td>小哥哥</td><td>100分</td><td>真不错</td></tr><tr><td>小姐姐</td><td>100分</td><td>666啊</td></tr></table>
</body>

表格标题和表头单元格标签

<body><table border="2" width = 500 height = 300><caption><strong>学生成绩单</strong></caption><tr><th>姓名</th><th>成绩</th><th>评语</th></tr><tr><td>小哥哥</td><td>100分</td><td>真不错</td></tr><tr><td>小姐姐</td><td>100分</td><td>666啊</td></tr></table>
</body>

合并单元格

<body><table border="2" width = 500 height = 300><caption><strong>学生成绩单</strong></caption><tr><th>姓名</th><th>成绩</th><th>评语</th></tr><tr><td>小哥哥</td><td rowspan="2">100分</td><td>真不错</td></tr><tr><td>小姐姐</td><!-- <td>100分</td> --><td>666啊</td></tr></table>
</body>

跨列合并同理 

input标签

<body>文本框:<input type="text"><br><br><!-- 书写的内容会以“点”的形式表示 -->密码框:<input type="password" name="" id=""><br><br>单选框:<input type="radio" name="" id=""><br><br>多选框:<input type="checkbox" name="" id=""><br><br>上传文件:<input type="file" name="" id="">
</body>

文本框

单选框

name有分组功能

<body><!-- checked是默认选中 -->性别:男<input type="radio" name="gender" checked>女<input type="radio" name="gender">
</body>

文件选择

input按钮

<body><form action="">昵称:<input type="text" name="" id=""><br><br>密码:<input type="password" name="" id=""><br><br><!-- 可以用value来指定按钮的名字 --><input type="submit" value="注册"><input type="reset" value="重置"><input type="button" value="普通按钮"></form>
</body>

button按钮

这个用的比较多

<body><button type="submit">提交</button><button type="reset">重置</button><button type="button">啥也没有</button>
</body>

select下拉菜单标签

<body><select name="" id=""><option value="">北京</option><option value="" selected>上海</option><option value="">广州</option><option value="">深圳</option></select>
</body>

textarea文本域标签

实际开发中,是用css来设置长宽,所以这里只要记住textarea是文本域就行了

<body><textarea name="" id="" cols="20" rows="30"></textarea>
</body>

label标签

两种方法都用到了。这样点“男”和“女”照样也可以选中

<body>性别:<input type="radio" name="sex" id="man"> <label for="man">男</label><label><input type="radio" name="sex" id="">女</label>
</body>

语义标签--div和span标签

后期使用 JavaScript 和 CSS为这两个标签添加功能。这两个标签本身并没有特定的功能,它们通常用于组织和样式化 HTML 内容。

<body><div>1</div><div>2</div><span>3</span><span>4</span>
</body>

字符实体

只要记住空格的 &nbsp 就行了,其他不用记。

为什么要写字符实体呢?

看下面代码,明明打了很多个空格,显示结果却只有一个空格

这是因为,网页只认识一个空格

因此,要达到多个空格的效果就要用上字符实体

<body>这是一个&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字符
</body>

综合案例-学生信息表

<body><table border="2" width = 600 height = 500><caption><strong>优秀学生信息表格</strong></caption><tr><th>年级</th><th>姓名</th><th>学号</th><th>班级</th></tr><tr><td rowspan="2">高三</td><td>张三</td><td>110</td><td>三年二班</td></tr><tr><td>赵四</td><td>120</td><td>三年三班</td></tr><tr><td>评语</td><td colspan="3">你们都很优秀</td></tr></table>
</body>

综合案例-表单

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><form action=""><h1>青春不常在,抓紧谈恋爱</h1><hr>昵称:<input type="text" placeholder="请输入昵称"><br><br>性别:<input type="radio" name="gender" id="">男<input type="radio" name="gender">女<br><br>所在城市:<select name="" id=""><option value="">北京</option><option value="">上海</option><option value="">广州</option><option value="">深圳</option></select><br><br>婚姻状况:<input type="radio" name="marry_state" id="">未婚<input type="radio" name="marry_state" id="">已婚<input type="radio" name="marry_state" id="">保密<br><br>喜欢的类型:<input type="checkbox" name="target_type" id="">御姐<input type="checkbox" name="target_type" id="">萝莉<input type="checkbox" name="target_type" id="">性感<input type="checkbox" name="target_type" id="">小家碧玉<br><br>个人介绍:<textarea name="" id=""></textarea><h3>我承诺</h3><ul><li>真诚寻找另一半</li><li>绿色上网,不违反法律法规</li><li>不约pao</li></ul><input type="checkbox" name="" id="">我同意所有条款<br><br><button type="submit" >免费注册</button><button type="reset">重置</button></form>
</body>
</html>

CSS基础

CSS介绍

这里用到了标签选择器。后文会详细讲到。

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>p{/* 设置颜色 */color: aqua;/* 字体变大 */font-size: 50px;/* 背景颜色 */background-color: bisque;width: 300px;height: 300px;}</style>
</head>

CSS引入方式

内嵌式:

上面已有,不再赘述

外联式:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./My_CSS.css">
</head>
<body><p>这是一个标签</p>
</body>
</html>

行内式:

<body><div style="color: blue; font-size: 30px;">div标签</div>
</body>

基础选择器

标签选择器

标签选择器在上面已经使用过了

标签选择器有一个很大的弊端,那就是会把所有相同标签的全部加上效果。

例如写了

div{

    /* 设置颜色 */

    color: aqua;

    /* 字体变大 */

    font-size: 50px;

    /* 背景颜色 */

    background-color: bisque;

    width: 300px;

    height: 300px;

}

那么所有div标签都会有这个效果。这个功能有好有坏,灵活性不够。

类选择器

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.red{color: red;}.size{font-size: 80px;}</style>
</head>
<body><div>111</div><div class="red">222</div><!-- 一个标签可以使用多个类名,用空格隔开即可 --><div class="red size">333</div></body>
</html>

id选择器

id选择器是与js配合使用的。css不会用到。 

通配符选择器

我将其戏称为众生平等选择器()

因为这个选择器会对所有标签都加上效果。

例如下图的代码,就是将所有标签的字都变成黄色。

字体和文本样式

字体大小

字体粗细

字体样式

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.n{font-style: normal;}.i{font-style: italic;}</style>
</head>
<body><div class="n">111</div><div class="i">222</div></body>
</html>

字体系列

<style>div{/* 这样写的目的 *//* 如果用户没有安装微软,就按黑体显示文字 *//* 如果电脑也没有安装黑体,那就按照任意一直非衬线字体系列显示 */font-family: 微软雅黑,黑体,sans-serif;}</style>

字体font相关属性的连写

<style>div{font: italic 100 60px 宋体;}</style>

<style>div{font: italic 100 60px 宋体;font-style: normal;//覆盖了上一行的倾斜效果}</style>

文本缩进

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{text-indent: 2em;}</style>
</head>
<body><div>发生肯德基那儿缴纳罚金你的咖啡胶囊卡恩九年地方的房价虐精啊发到你姐夫vi十分艰难打工呢欧神诺的发表吉尼斯额你大佛不弄啥都i哦</div></body>

文本水平对齐方式

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>h1{text-align: center;}/* 因为图片是在body里 */body{text-align: center;}</style>
</head>
<body><h1>火影忍者</h1><img src="./Ninja.gif" alt="">
</body>
</html>

文本修饰

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{text-decoration: underline;}a{text-decoration: none;/* 去除下划线 */}</style>
</head>
<body><div>div</div><a href="#">这是一个超链接</a>
</body>
</html>

行高设置

<style>div{line-height: 3;}
</style>

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{font:italic 20px/3 宋体;}</style>
</head>

拓展

需要做区分的是:

margin是让标签居中

而text-align是让内容居中(包括文本,图片等)

综合案例-新闻

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 800px;height: 600px;/* background-color: rgb(248, 247, 246); */margin: 0 auto;}a{text-decoration: none;}p{text-indent: 2em;}.center{text-align: center;}.color1{color: #808080;}.color2{color: #87ceed;font-weight: 200;}</style>
</head>
<body><div><h1 class="center">《自然》评选改变科学的10个计算机代码项目</h1><span class="color1 center">2077年01月28日14:58 </span><span class="color2 center">新浪科技 </span><a href="#">收藏本文</a><hr><p>2019年,事件视界望远镜团队让世界首次看到了黑洞的样子。不过,研究人员公布的这张发光环形物体的图像并不是传统的图片,而是经过计算获得的。利用位于美国、墨西哥、智利、西班牙和南极地区的射电望远镜所得到的数据,研究人员进行了数学转换,最终合成了这张标志性的图片。研究团队还发布了实现这一壮举所用的编程代码,并撰文记录这一发现,其他研究者也可以在此基础上进一步加以分析。</p><p>这种模式正变得越来越普遍。从天文学到动物学,在现代每一项重大科学发现的背后,都有计算机的参与。美国斯坦福大学的计算生物学家迈克尔·菜维特因“为复杂化学系统创造了多尺度模型”与另两位研究者分享了2013年诺贝尔化学奖,他指出,今天的笔记本电脑内存和时钟速度是他在1967年开始获奖工作时实验室制造的计算机的1万倍。“我们今天确实拥有相当可观的计算能力,”他说,“问题在于,我们仍然需要思考。</p><p>如果没有能够解决研究问题的软件,以及知道如何编写并使用软件的研究人员,一台计算机无论再强大,也是毫无用处的。如今的科学研究从根本上已经与计算机软件联系在一起,后者已经渗透到研究工作的各个方面。近日,《自然》(Nature)杂志将目光投向了幕后,着眼于过去几十年来改变科学研究的关键计算机代码,并列出了其中10个关键的计算机项目。</p></div>
</body>
</html>

选择器进阶

后代选择器

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div p{color: red;}</style>
</head>
<body><p>这是一个p</p><div><p>这是div里的p</p></div>
</body>
</html>

子代选择器

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div > p{color: red;}</style>
</head>
<body><div><p>这是div里的p</p><span><p>这是div里div的p</p></span></div>
</body>
</html>

并集选择器

差不多就是一种连写吧

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div,span,h1{color: red;}</style>
</head>
<body><div>1</div><span>2</span><h1>3</h1><h2>4</h2>
</body>
</html>

交集选择器

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div.box{color: red;}</style>
</head>
<body><!-- 使带有box类div标签变红 --><div class="box">1</div><div>2</div><span class="box">3</span></body>
</html>

hover伪类选择器

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>a:hover{color: red;background-color: aqua;}div:hover{color: darkorange;}</style>
</head>
<body><a href="#">超链接</a><div>div</div></body>
</html>

emmet语法

背景相关

是标签里的背景

背景颜色

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 400px;height: 300px;/* 红,绿,蓝,透明度 */background-color: rgba(0,0,0,0.5);}</style>
</head>
<body><div>div</div>
</body>
</html>

背景图片

背景平铺

背景位置

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 800px;height: 600px;/* 红,绿,蓝,透明度 */background-color: rgba(0,0,0,0.5);background-image: url(./永带妹.gif);background-repeat: no-repeat;background-position: center top;}</style>
</head>
<body><div></div>
</body>
</html>

背景相关属性连写

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 800px;height: 600px;/* 红,绿,蓝,透明度 */background: rgba(0,0,0,0.5) url(./永带妹.gif) no-repeat 50px 100px;/* 不像font连写有固定顺序,background没有固定顺序 *//* 可以按照需求省略,但是位置如果是数值,不要颠倒顺序(水平,垂直) */}</style>
</head>
<body><div></div>
</body>
</html>

拓展:img和背景图片的区别

在开发中,重要的图片用img,不重要的图片用div标签+图片。这是约定俗成的。

元素显示模式

块级元素 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 300px;height: 200px;background-color: aqua;}</style>
</head>
<body><div>1</div><div>2</div>
</body>
</html>

行内元素

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>span{width: 300px;height: 200px;background-color: aqua;}</style>
</head>
<body><span>1</span><span>2</span>
</body>
</html>

可以看到就算加了宽高也没什么用 

行内块元素

总结:

块元素:独占一行,可以设置宽高

行内元素:一行可以显示多个,不可以设置宽高

行内块元素:一行可以显示多个,可以设置宽高

元素显示模式转换

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 300px;height: 200px;background-color: aqua;display: inline-block;}</style>
</head>
<body><div>1</div><div>2</div>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>span{width: 300px;height: 200px;background-color: aqua;display: block;}</style>
</head>
<body><span>1</span><span>2</span>
</body>
</html>

继承性

技巧:能控制字的都能继承,否则不能

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{color: red;}</style>
</head>
<body><!-- 因为span标签的父级是div,会继承字体 --><div>这是1<span>这是2</span></div></body>
</html>

可以看到超链接的颜色没有变。

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{color: red;}</style>
</head>
<body><!-- 因为span标签的父级是div,会继承字体 --><div><a href="#">超链接</a></div></body>

层叠性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{color: red;color: blue;/* 蓝色就覆盖了红色 */}.box{font-size: 100px;}</style>
</head>
<body><!-- 因为span标签的父级是div,会继承字体 --><div class="box">666</div></body>
</html>

综合案例1

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 注意a是行内元素,如果想设置宽高需要转化成行内块 */a{color: aliceblue;text-decoration: none;background-color: red;width: 100px;height: 50px;text-align: center;line-height: 50px;display: inline-block;}a:hover{background-color: orange;}</style>
</head>
<body><a href="#">导航1</a><a href="#">导航2</a><a href="#">导航3</a><a href="#">导航4</a><a href="#">导航5</a>
</body>
</html>

鼠标悬停的时候时橘色

综合案例2

优先级介绍

不必特意去记,只要记住,谁更精确,谁的优先级更高

 盒子模型

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div{width: 300px;height: 200px;background-color: blue;/* 盒子边框线 */border: 1px solid black;/* 内边距:出现在内容与盒子之间 */padding: 20px;/* 外边距:出现在两个盒子之间,是在盒子外面 */margin: 50px;}</style>
</head>
<body><div>盒子1</div><div>盒子2</div></body>
</html>

打开调试就可以看到具体的盒子结构了

边框(border)使用

border: 线条粗细  样式  颜色

不分先后顺序

border-left: 5px solid black; 

盒子大小计算

盒子尺寸 = width / height + 边框粗细*2
因此对于以上需求,代码如下

因为上下各有10px的黑边框,这就有20px了,因此为了使整个盒子为400,标签大小就设置成380px

案例:新浪导航

技巧:从外到内:先宽高背景色,放内容,调节内容的位置;控制文字细节

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box{height: 40;border-top: 3px solid #ff8500;border-bottom: 1px solid #edeef0;}.box a{width: 80px;height: 40px;/* background-color: #edeef0; *//* 虽然这里用不到,但建议先加上,因为可以看到文字的位置 *//* div是块级元素,要设置宽高,转换成行内块元素 */display: inline-block;text-align: center;line-height: 40px;text-decoration: none;color: #4c4c4c;}.box a:hover{background-color: #edeef0;color: #ff8400;}</style>
</head>
<body><div class="box"><a href="#">新浪导航</a><a href="#">新浪导航</a><a href="#">新浪导航</a><a href="#">新浪导航</a></div>
</body>
</html>

内边距(padding)

内边距优化新浪导航案例

如上图出现的问题,如果字多了,就会自动换行,因为超链接的宽度被固定死了

因此我们可以不设置宽度,并且用内边距来保持美观

盒子模型自动内减

box-sizing: border-box;

外边距(margin)

使用方法和内边距一样

清除默认内外边距

版心居中

版心:网页的有效内容

版心居中:

margin: 0 auto;

案例:新闻导航

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;padding: 0;box-sizing: border-box;}.news{width: 500px;height: 400px;margin: 50px auto;padding: 42px 30px 0;border: 1px solid #ccc;}.news h2{font-size: 30px;border-bottom: 1px solid #ccc;/* 行高是一倍,就是字号的大小 */line-height: 1;padding-bottom: 9px;}.news ul{list-style: none;}.news li{height: 50px;border-bottom: 1px dashed #ccc;padding-left: 28px;line-height: 50px;}.news a{text-decoration: none;color: #666;font-size: 18px;}</style>
</head>
<body><div class="news"><h2>最新文章/New Articles</h2><ul><li><a href="#">北京招聘网页设计,平面设计,php</a></li><li><a href="#">北京招聘网页设计,平面设计,php</a></li><li><a href="#">北京招聘网页设计,平面设计,php</a></li><li><a href="#">北京招聘网页设计,平面设计,php</a></li><li><a href="#">北京招聘网页设计,平面设计,php</a></li></ul></div>
</body>
</html>

一些需要注意的问题

1合并现象

如下,可以看到重合了。

2塌陷现象

当前是这样

我们想变成这样

我们会想到给子元素加上margin:50px,然而效果却不对。

可以看到整块都往下移动了,这就是“塌陷现象”,解决办法在上面了

加上overflow:hidden 后

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.test1{width: 300px;height: 300px;background-color: red;overflow: hidden;}.test2{width: 100px;height: 100px;background-color: blue;margin: 50px;}</style>
</head>
<body><div class="test1"><div class="test2">666</div></div></body>
</html>

3

CSS浮动

结构伪类选择器

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>li:first-child{color: antiquewhite;}li:last-child{color: aqua;}li:nth-child(2){color: red;}li:nth-last-child(2){color: blue;}</style>
</head>
<body><ul><li>这是第1个</li><li>这是第2个</li><li>这是第3个</li><li>这是第4个</li><li>这是第5个</li><li>这是第6个</li><li>这是第7个</li><li>这是第8个</li></ul>
</body>
</html>

也可以批量选择。公式如下

伪元素

还有一个需要注意的点是,content的内容记得加单引号

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.father{width: 300px;height: 300px;background-color: pink;}.father::before{content: '我';color: red;}.father::after{content: '写代码';color: blue;}</style>
</head>
<body><div class="father">爱</div>
</body>
</html>

如果想变成上下的话也可以,设置成块元素即可。

浮动

体验行内块问题
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.one{width: 100px;height: 100px;background-color: red;display: inline-block;}.two{width: 100px;height: 100px;background-color: blue;display: inline-block;}</style>
</head>
<body><div class="one">one</div><div class="two">two</div>
</body>
</html>

发现两个标签中间有空隙,而我们并没有写任何空格。

这是因为浏览器解析行内块或行内标签的时候,如果标签换行书写,会产生空隙。

如果这样写就能避免了

但显然这并不是个好办法,因此我们要学习浮动

浮动的简单使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.one{width: 100px;height: 100px;background-color: red;float: left;}.two{width: 100px;height: 100px;background-color: blue;float: left;}</style>
</head>
<body><div class="one">one</div><div class="two">two</div>
</body>
</html>

浮动的特点

总结:浮动元素会脱离标准流,在标准流中不占位置,且比标准流级别高,可以覆盖标准流的元素

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.one{width: 100px;height: 100px;background-color: red;float: left;}.two{width: 200px;height: 200px;background-color: blue;/* float: left; */}.three{width: 300px;height: 300px;background-color: rgb(15, 247, 65);/* float: left; */}</style>
</head>
<body><div class="one">one</div><div class="two">two</div><div class="three">three</div>
</body>
</html>

清除浮动的应用

此处只是简单地设置margin来消除影响

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0%;padding: 0%;}.box{width: 1226px;height: 614px;margin: 0 auto;}.left{background-color: purple;width: 234px;height: 614px;float: left;}.right{float: right;width: 978px;height: 614px;}.right li{width: 234px;height: 300px;background-color: #87ceed;margin-right: 14px;margin-bottom: 14px;float: left;}.right li:nth-child(4n){margin-right: 0;}ul{list-style: none;}</style>
</head>
<body><div class="box"><div class="left"></div><div class="right"><ul><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul></div></div></body>
</html>

注意!

比较坑的地方是这里,冒号前面别加空格,否则不生效的

清除浮动的方法

如果出现以下问题该怎么解决

引出问题

我们想实现以下界面,代码如下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;padding: 0;}.box{width: 300px;height: 100px;background-color: pink;margin: 0 auto;}.left{width: 100px;height: 100px;background-color: blue;float: left;}.right{width: 100px;height: 100px;background-color: rgb(5, 245, 69);float: right;}.bot{height: 200px;background-color: red;}</style>
</head>
<body><div class="box"><div class="left"></div><div class="right"></div></div><div class="bot"></div></body>
</html>

那当我们把父级设置的宽高去掉,就会变成这样。

因为父级没有大小,浮动元素又不占标准流,下面的div就会“上来”。

以下提出了几种解决办法

直接设置父元素高度

既然去掉父元素的宽高会出现问题,那么加上就好了嘛。

但这缺陷还是挺大的,不推荐

额外标签法

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;padding: 0;}.box{background-color: pink;margin: 0 auto;}.left{width: 100px;height: 100px;background-color: blue;float: left;}.right{width: 100px;height: 100px;background-color: rgb(5, 245, 69);float: right;}.bot{height: 200px;background-color: red;}.cleanfix{clear: both;}</style>
</head>
<body><div class="box"><div class="left"></div><div class="right"></div><div class="cleanfix"></div></div><div class="bot"></div></body>
</html>

单伪元素清除法

直接在父元素加上这个clearfix类就行

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0;padding: 0;}.box{background-color: pink;margin: 0 auto;}.left{width: 100px;height: 100px;background-color: blue;float: left;}.right{width: 100px;height: 100px;background-color: rgb(5, 245, 69);float: right;}.bot{height: 200px;background-color: red;}.clearfix::after{content: '';display: block;clear: both;}</style>
</head>
<body><div class="box clearfix"><div class="left"></div><div class="right"></div></div><div class="bot"></div></body>
</html>

双伪元素清除法

和上一个用法差不多

给父元素设置overflow:hidden

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

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

相关文章

《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-01-层次式体系结构概述

文章目录 1. 常用层次是架构2. 层次式架构设计的注意点2.1 污水池反模式2.2 应用变得庞大 本章教材又赘述了一遍架构的定义和层次架构风格的概述&#xff0c;我之前的笔记都写了 架构的定义回看《第7章-系统架构设计基础知识-01-软件架构&#xff08;Software Architecture&…

学习测试15-实战6-根据说明书建工程

CAN协议说明书&#xff1a;含义 一&#xff0c;得到表 1&#xff0c;先建信号 2&#xff0c;建报文&#xff0c;将对应信号拖入其中 3&#xff0c;建节点&#xff0c;将报文添加进TX msg里 调整起始位 数据库建立完成 二&#xff0c;不需要面板&#xff0c;直接导入数据库&…

HTTPS证书价格一年多少钱?如何购买?

目前市面上所有免费一年期HTTPS已经全部下架&#xff0c;付费证书已经成为主流。HTTPS证书的价格受多种因素影响&#xff0c;具体有以下几种&#xff1a; 一、证书类型 单域名证书价格一般在几百元左右&#xff0c;通配符价格高一些&#xff0c;千元以上&#xff0c;多域名价…

《知识点扫盲 · Redis 序列化器》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

米家护眼台灯怎么样?书客、米家、明基三款护眼台灯大PK

市面上出现的护眼台灯款式不得不说真的很多&#xff0c;大家若是想要在护眼台灯这个大市场里选购到一款性价比高、质量过关、口碑好且还真的实用的护眼台灯需要认真做好攻略。所以&#xff0c;我们要有技巧的对这些台灯进行筛选&#xff0c;避开那些三无的、网红品牌、无知名度…

http协议与nginx

动态页面与静态页面的差别&#xff1a; &#xff08;1&#xff09;URL不同 静态⻚⾯链接⾥没有“?” 动态⻚⾯链接⾥包含“&#xff1f;” &#xff08;2&#xff09;后缀不同 (开发语⾔不同) 静态⻚⾯⼀般以 .html .htm .xml 为后缀 动态⻚⾯⼀般以 .php .jsp .py等为后…

【吊打面试官系列-Dubbo面试题】Dubbo SPI 和 Java SPI 区别?

大家好&#xff0c;我是锋哥。今天分享关于 【Dubbo SPI 和 Java SPI 区别&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Dubbo SPI 和 Java SPI 区别&#xff1f; JDK SPI JDK 标准的 SPI 会一次性加载所有的扩展实现&#xff0c;如果有的扩展吃实话很耗时&…

Python中的类型注解和静态类型检查使用详解

概要 Python作为一种动态类型语言,其灵活性和易用性使其广受欢迎。然而,动态类型也带来了一些问题,如代码可读性差和运行时错误等。为了提高代码质量和可维护性,Python从3.5版本开始引入了类型注解(Type Hints),并且借助第三方工具可以实现静态类型检查。本文将详细介绍…

Python学生信息管理系统

一、需求分析 学生管理系统应具备的功能 1、添加学生及成绩信息 2、将学生信息保存到文件中 3、修改和删除学生信息 4、查询学生信息 5、根据学生成绩进行排序 6、统计学生的总分 二、系统设计 2.1、学生信息管理系统的系统功能结构&#xff08;7大模块&#xff09; 1、录入…

vue里给img的src绑定数据失效

起因 在v-for遍历数据时想要通过给img的src单向绑定 图片路径时出现问题 解决过程 上网查说是webpack构建时识别不到&#xff0c;直接不单绑数据&#xff0c;写死试试看 解决方案 直接require导入图像文件模块

AI Agent调研--7种Agent框架对比!盘点国内一站式Agent搭建平台,一文说清差别!大家都在用Agent做什么?

代理&#xff08;Agent&#xff09;乃一种智能实体&#xff0c;具备自主环境感知与决策行动能力&#xff0c;旨在达成既定目标。作为个人或组织之数字化替身&#xff0c;AI代理执行特定任务与交易&#xff0c;其核心价值在于简化工作流程&#xff0c;削减繁复性&#xff0c;并有…

MSPM0G3507之电赛小车

一、前言 本文没什么技术分享&#xff0c;纯聊天。以下内容均为笔者的浅薄理解&#xff0c;有不对的地方还请多多包涵。 二、相关配置 主控单元&#xff1a;MSPM0G3507SPTR&#xff08;48角&#xff09; 编译环境&#xff1a;Keil5.33、5.39&#xff08;推荐&#xff09;都可 …

Redisson关键参数含义介绍

一、threads&#xff08;线程池数量&#xff09; 对应executor&#xff08;线程池&#xff09; 默认值: 当前处理核数量 * 2 这个线程池数量被所有RTopic对象监听器&#xff0c;RRemoteService调用者和RExecutorService任务共同共享。 二、nettyThreads &#xff08;Netty线…

数据结构与算法-关于堆的基本排序介绍

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、堆排序…

Springboot使用Redis实现分布式锁

1、使用场景和实现方案&#xff1a; 使用场景&#xff1a;本地锁如Lock和Syncronized只能锁住本地进程&#xff0c;在分布式应用中&#xff0c;需要使用分布式锁来更好实现特定的业务。 实现方案&#xff1a;有多种&#xff0c;比如使用mysql、zookeeper、redis&#xff0c;各…

80端口被system占用 ,system进程是4!!!亲测-----解决

最近需要使用nginx&#xff0c;发现80端口北占用 正常情况下&#xff0c;查看那个进程占用&#xff0c;然后找到对应的程序&#xff0c;关闭对应的就可了。 使用 netstat 命令&#xff1a; 打开命令提示符&#xff08;以管理员身份&#xff09;。输入命令 netstat -ano | fi…

vue3 + element plus使用iconfont 自定义font组件颜色大小可修改

vue3 element plus使用iconfont 自定义font组件&颜色大小可修改这里写自定义目录标题 自定义SvgIcon.vue引入iconfontApp.vue中引入组件更改图标大小 参考网上方案新建SvgIcon.vue&#xff0c;但没说明怎么修改颜色及大小&#xff0c;我在这个博客中简单提供下。 自定义Sv…

通用大模型演进路线

随着人工智能技术的飞速发展&#xff0c;通用大模型&#xff08;GLMs&#xff09;已经成为人工智能领域的重要研 究方向。通用大模型拥有超大规模参数&#xff0c;通过大规模数据进行训练&#xff0c;具备强大的学习和推理 能力。这些模型在自然语言处理、图像识别、代码生成等…

skynet 实操篇

文章目录 概述demo启动文件skynet_start配置文件main.luastart函数thread_workerskynet_context_message_dispatchskynet_mq_popdispatch_message 小结 概述 上一篇写完skynet入门篇&#xff0c;这一篇写点实操性质的。 demo 对于一个开源框架&#xff0c;大部分都有他们自己…

史上最全的Seata教学并且连接springcloudAlibaba进行使用

来都来了点个赞收藏一下在走呗~~&#x1f339;&#x1f339;玫瑰 一、Seata是什么 Seata&#xff08;Simple Extensible Autonomous Transaction Architecture&#xff0c;简单可扩展自治事务框架&#xff09;是一种分布式事务解决方案&#xff0c;旨在解决分布式系统中的事务…