update:2022/1/11 21:37
- 轮廓、阴影、圆角
- 浮动布局及高度塌陷
- BFC-块式格式化环境
- 定位及元素层级
- @charset 规则与@import 规则
w3school HTML 教程 w3school HTML 标签参考手册 MDN HTML 教程 MDN HTML 元素参考 w3school CSS 教程 w3school CSS 参考手册 MDN CSS 教程 MDN CSS 参考手册 在线文档用于查阅参考资料
黑马程序员web前端开发入门教程 尚硅谷Web前端零基础入门HTML5+CSS3基础教程 在线视频学习资源用来辅助学习,上面两个是我个人觉得质量比较高的,二选一选择一个视频资源个人比较习惯的跟着学习即可
接下来是一些与盒子有关的相对特殊CSS属性——圆角、阴影、轮廓、不透明度等,它们可以用于让盒子样式表现得更加不同
border-radius 属性用于向元素添加圆角边框
实际上border-radius
属性是border-top-left-radius
属性border-top-right-radius
属性border-bottom-right-radius
属性border-bottom-left-radius
以上4个属性的简写,实际上简写属性border-radius
属性使用较多
取值:
应为一个长度单位,可为绝对长度或百分比
实际开发中可将
border-radius
属性取值设为50%,从而实现圆形效果
值个数规则:
- 四个值: 15px 50px 30px 5px; (依次分别用于:左上角、右上角、右下角、左下角)
- 三个值: 15px 50px 30px; (第一个值用于左上角,第二个值用于右上角和左下角,第三个用于右下角)
- 两个值: 15px 50px; (第一个值用于左上角和右下角,第二个值用于右上角和左下角)
- 一个值: 15px; (该值用于所有四个角,圆角都是一样的)
椭圆:
在 / 之前设置四个椭圆水平方向的半径,之后设置垂直方向半径
如border-radius:10px 20px / 20px 10px
四个角的椭圆轴长分别是(从左上顺时针方向):10px 20px,20px 10px,10px 20px,20px 10px
box-shadow
属性用于向元素添加阴影
语法:
box-shadow: h-shadow v-shadow blur spread color inset;
h-shadow 必需 水平阴影的位置
v-shadow 必需 垂直阴影的位置
blur 可选 模糊距离
spread 可选 阴影的尺寸
color 可选 阴影的颜色
inset 可选 将外部阴影 (outset) 改为内部阴影
outline
属性向元素周围绘制的一条线,在边框之外,以凸显元素
注意:轮廓不是元素尺寸的一部分,元素的总宽度和高度不受轮廓线宽度的影响
outline
属性是以下各轮廓属性的简写属性: outline-width
属性、outline-color
属性、outline-style
属性,其中outline-style
属性是必需的
取值:
与border
属性在取值上非常相似,这边就不多阐述了
**outline-offset**
** 属性**:
在元素的轮廓与边框之间添加空间,元素及其轮廓之间的空间是透明的,该属性的值即轮廓与边框间的距离
opacity 属性设置元素的不透明级别,取值在0~1间 注意:使用 opacity 属性为元素的背景添加透明度时,其所有子元素都继承相同的透明度,可能会使完全透明的元素内的文本难以阅读,达不到期望的效果;此类情况下请使用rgba替代
opacity
属性可以与:hover
选择器一同使用以实现在鼠标悬停时更改不透明度的效果
visibility 属性规定元素是否可见 取值:
- visible【默认值】 元素是可见的
- hidden 元素是不可见的
- collapse 当在表格元素中使用时,此值可删除一行或一列,但是它不会影响表格的布局,被行或列占据的空间会留给其他内容使用;如果此值被用在其他的元素上,效果等价于 "hidden"
opacity:0
、visibility:hidden
与display:none
均可设置元素隐藏,区别在于:opacity
与visibility:hidden
属性隐藏的元素仍占据相应的空间,而display
属性隐藏的元素不会占据相应空间
下面我们将开始一个比较重要的布局的讲述——浮动布局 实际上浮动布局是一种老的布局技术了,现在开发中使用比较少,因为处理起比较麻烦,但对它的了解还是有一定意义的,并且浮动布局在实现文本环绕图片、首字下沉、导航条等效果时还是比较方便的 伴随着浮动的就是取消浮动和高度塌陷问题,这需要我们给出一些手段来实现
通过浮动可以使一个元素向其父元素左侧或右侧移动 浮动通过设置float属性实现
- left 元素浮动到其容器的左侧
- right 元素浮动在其容器的右侧
- none 元素不会浮动(将显示在文本中刚出现的位置)【默认】
- inherit 元素继承其父级的 float 值
- 浮动元素脱离文档流,不占用文档流中位置,水平布局等式不强制成立
- 设置浮动后元素会向父元素的左侧或右侧移动,可实现水平布局
- 浮动元素向左或向右移动时,会排在它前边其他浮动元素后面
- 浮动元素不会盖住文字,文字会自动环绕在浮动元素的周围
- 实现水平布局
- 实现文字环绕图片效果
文字浮动
<p><img src="/i/logo/w3logo-3.png" alt="W3School" style="
width: 170px;
height: 170px;
margin: 0 25px;
float: left;
">
领先的 Web 技术教程 - 全部免费。在 W3School,你可以找到你所需要的所有的网站建设教程。从基础的 HTML 到 CSS,乃至进阶的 XML、SQL、JS、PHP。
我们的参考手册涵盖了网站技术的方方面面。其中包括W3C标准技术:HTML、CSS、XML 。以及其他技术,诸如 JavaScript、PHP、SQL 等。
在 W3School,我们提供上千个实例。通过使用我们的在线编辑器,你可以编辑这些例子,并对代码进行实验。</p>
导航栏 还记得我们之前提到过无序列表可以用于实现导航栏么,下面我们将利用无序列表演示导航栏的简单原理
<ul>
<ol>1</ol>
<ol>2</ol>
<ol>3</ol>
<ol>4</ol>
<ol>5</ol>
</ul>
ul {
background-color: #ddd;
padding: 10px 20px;
float: left;
}
ol {
background-color: #999;
float: left;
margin: 0 10px;
}
清除浮动元素对当前元素的影响,原理为为元素添加一个上外边距,抵消浮动元素的影响
clear
属性
规定元素的哪一侧不允许其他浮动元素出现
取值:
- left 在左侧不允许浮动元素
- right 在右侧不允许浮动元素
- both 在左右两侧均不允许浮动元素
- none 默认值。允许浮动元素出现在两侧
这个属性使用比较少,最常用于处理高度塌陷问题
在浮动布局中,如果父元素没有设置高度,默认被子元素撑开,当子元素浮动并从文档流中脱离后,将无法撑起父元素高度,使父元素高度丢失。这将改变页面布局,需要进行处理。
- 父元素高度写死(不推荐)
- 父元素开启 BFC(参考下一小节BFC介绍)
- 父元素设置 float
副作用:父元素的宽度丢失、父元素一级的布局又会受到浮动影响
- 父元素设置 display: inline-block
- 父元素设置 overflow: hidden 或 auto(推荐)
缺点:不能和position定位配合使用,超出的尺寸会被隐藏
- :after 伪元素撑起父元素高度(最为推荐)
一个常规解决高度塌陷的问题
.clearfix::before, .clearfix::after{
content: '';
display: table;
clear: both;
/* 以下代码为了解决 IE 浏览器的兼容问题 */
height: 0;
overflow: hidden;
/* 以下代码为了去隐藏content中的内容 */
visibility: hidden;
}
使用时直接把clearfix类名称加至父元素class属性即可
overflow 属性规定当内容溢出元素框时如何处理溢出的内容 取值:
- visible 默认值。内容不会被修剪,会呈现在元素框之外
- hidden 内容会被修剪,并且其余内容是不可见的
- scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容
- auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容
参考 MDN链接
BFC 是 CSS 中隐含的属性,元素开启 BFC 后会成为一个独立的布局环境
- 开启 BFC 的元素不会被浮动元素所覆盖
- float 元素不会相互覆盖、文本环绕图片
- 开启 BFC 的父元素不会和子元素发生外边距重叠
- 开启 BFC 的元素可以包含浮动的子元素
- 解决高度塌陷问题
- 设置元素浮动(不推荐)
- 将元素设置为行内元素(不是非常推荐)
- 将元素 overflow 设置为除 visible 外的值(副作用小)
- 还有弹性元素、网格元素等等,其他方法可参考上面的MDN链接
(4)示例 BFC最常用于处理处理高度塌陷和避免父子元素外边距重叠这两个问题
- 开启 BFC 元素不会被浮动元素覆盖
给 box2 设置 overflow: hidden 开启 BFC 之后,box2 排列在 box1 右边。
- 开启 BFC 父元素不会和子元素发生外边距重叠
给 outer 设置 overflow: hidden 开启 BFC 之后,inner 的 margin-top 不再溢出。
- 开启 BFC 的元素可以包含浮动的元素
给 outer 设置 overflow: hidden 开启 BFC 之后,outer 高度被子元素撑起。
下面我们将要讨论的是定位,定位在实际中应用非常广泛
position
属性规定应用于元素的定位方法的类型
取值:
- static【默认值】 静态定位
- relative 相对定位
- fixed 固定定位
- absolute 绝对定位
- sticky 粘滞定位
静态定位
相对定位
绝对定位
均为top:40px,left:40px
top
、bottom
、left
和 right
属性控制元素定位,决定元素最终位置
不同的 position 的属性值下,它们的工作方式不同
只有 position 属性设置为非 static,这些属性才会起作用
一般一个方向上只用一个属性即可
- 正常情况下
包含块就是离当前元素最近的祖先块元素
如:<div> <span>hello</span></div>
,hello 的包含块为 div
- 绝对定位的包含块
包含块就是离当前元素最近的开启了定位的祖先元素 如果所有祖先元素都没开启定位,则初始包含块为其包含块
- html 元素
根元素、初始包含块(ICB - inital container block)
position: static; 的元素不会以任何特殊方式定位;它始终根据页面的正常流进行定位,不受 top、bottom、left 和 right 属性的影响
- 开启后不设置偏移量,元素不发生任何变化
- 相对定位是参照于元素在文档流中的位置进行定位的
- 相对定位会提升元素层级
- 相对定位不会使元素脱离文档流
- 相对定位不会改变元素性质,块还是块,行内还是行内
最多还是用于—父元素相对定位子元素绝对定位
- 开启后不设置偏移量,元素的位置不发生任何变化
- 绝对定位是参照与元素的包含块进行定位的
- 绝对定位会提升元素层级(z-index属性)
- 开启后元素会从文档流中脱离
- 绝对定位会改变元素性质,行内变成块,块的宽高被内容撑开(脱离文档流中元素性质)
- 固定定位是一种特殊的绝对定位,其大部分特点和绝对定位一样
- 唯一不同,固定定位永远参照于浏览器窗口进行定位,不随浏览器滚动条的滚动而滚动
(8)粘滞定位
- 粘滞定位和相对定位特点基本一致
- 不同的是粘滞定位可以在元素到达某个位置时将其固定
其对浏览器兼容性不是很好,如IE等可能会存在兼容性的问题
对于开启了定位的元素,可通过 z-index 属性来指定元素层级 z-index 需要一个整数作为参数,值越大层级越高,(一般指定为正数) 显示规则:
- 元素层级越高越优先显示
- 如果元素层级一样,则优先显示靠下元素
- 祖先元素的层级再高也不会盖住后代元素
取值: auto【默认值】 堆叠顺序与父元素相等 number 设置元素的堆叠顺序
开启绝对定位后,水平方向的布局等式需添加 left 和 right 两个值,规则和之前一样。
left + margin-left + border-left + padding-left +width + padding-right + border-right +margin-right + right = 包含块的内容区宽度
发生过度约束时
- 9 个值中没有 auto,自动调整 right 使等式满足
- 如果有 auto,自动调整 auto 的值使等式成立
- 可设置 auto 的值,margin、width、left、right
- 里面详细情况与盒模型里的水平方向的等式相同
垂直方向等式也必须满足
top + margin-top + border-top + padding-top + height + padding-bottom + border-bottom + margin-bottom + bottom = 包含块的内容区高度
发生过度约束时和水平等式处理一样,不过是优先调整 bottom
下面介绍两个CSS规则
简介:
- @import 规则允许您将样式表导入另一张样式表中
- @import 规则必须位于文档顶部(但是应在任何 @charset 声明之后)
- @import 规则还支持媒体查询,因此可以允许依赖媒体的导入(只做简单了解即可)
语法与示例:
- 使用字符串
@import "navigation.css";
- 使用 url
@import url("navigation.css");
简介:
- @charset 规则指定样式表中使用的字符编码
- @charset 规则必须是样式表中的第一个元素,并且不能以任何字符开头,如果定义了多个 @charset 规则,则仅使用第一个
- @charset 规则不能在 style 属性内(在 HTML 元素上)或在与 HTML 页面的字符集相关的 <style> 元素内使用
示例:
@charset "UTF-8";
-
提交作业 ● 提交课后作业可以加积分,积累积分可以获得奖励 ● 课后作业发我的邮箱:
[email protected]
● 发送邮件主题按如下格式:前端-姓名-第x周-第x次
, 如 前端-陈思远-第1周-第1次 ● 每次课程作业在下下次课程之前发送到我的邮箱 -
作业内容
实现如下一个导航栏的效果,应有鼠标移动改变的效果 同时至少完成以下一个下拉框 (完成一个足矣) 关于作业的一些必需的补充知识
/* 设置文字下划线、删除线、上划线等,取值为none即不设置 */
/* 可以用于取消超链接默认下划线 */
text-decoration: none;
/* 设置文字水平对齐方式,取值为center可使文字水平居中 */
text-align: center;
/* 设置文字颜色 */
color: black;
/* 设置文字加粗,取值为bold即加粗 */
font-weight: bold;
/* 设置文字行高,可用于文字垂直居中,一般应为大于字号的正整数 */
line-height: 2em;