当前位置: 首页 > news >正文

CSS基础知识(3)

目录

一、CSS 的三大特性

1.1 层叠型

1.2 继承性

1.3 优先级

二、CSS 用户界面样式

2.1 鼠标样式 cursor

2.2 轮廓线 outline

2.3 防止拖拽文本域 resize

三、 vertical-align 属性

3.1 vertical-align 属性应用

3.2 解决图片底部默认空白缝隙问题

四、溢出的文字省略号显示

4.1 单行文本溢出显示省略号

4.2 多行文本溢出显示省略号

五、常见布局技巧

5.1 margin负值的运用

5.2 CSS三角强化


一、CSS 的三大特性

CSS 有三个非常重要的三个特性:层叠性、继承性、优先级。

1.1 层叠型

相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题

层叠性原则:

  • 样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式

  • 样式不冲突,不会层叠

1.2 继承性

现实中的继承: 我们继承了父亲的姓

CSS中的继承: 子标签会继承父标签的某些样式,如文本颜色和字号。简单的理解就是:子承父业。

  • 恰当地使用继承可以简化代码,降低CSS样式的复杂性
  • 子元素可以继承父元素的样式(text-font-line-这些元素开头的可以继承,以及color属性)

行高的继承:

body {
        font:12px/1.5 Microsoft YaHei;
}
  • 行高可以跟单位也可以不跟单位
  • 如果子元素没有设置行高,则会继承父元素的行高为 1.5
  • 此时子元素的行高是:当前子元素的文字大小 * 1.5
  • body 行高 1.5 这样写法最大的优势就是里面子元素可以根据自己文字大小自动调整行高

1.3 优先级

当同一个元素指定多个选择器,就会有优先级的产生。

  • 选择器相同,则执行层叠性

  • 选择器不同,则根据选择器权重执行

选择器权重如下表所示。

选择器选择器权重
继承或*0,0,0,0
元素选择器0,0,0,1
类选择器,伪类选择器0,0,1,0
ID选择器0,1,0,0
行类样式 style=""1,0,0,0
!important无穷大

优先级注意点:

  1. 权重是有4组数字组成,但是不会有进位。
  2. 可以理解为类选择器永远大于元素选择器, id选择器永远大于类选择器,以此类推..
  3. 等级判断从左向右,如果某一位数值相同,则判断下一位数值。
  4. 可以简单记忆法: 通配符和继承权重为0, 标签选择器为1,(伪类)选择器为10, id选择器100, 行内样式表1000, !important 无穷大.
  5. 继承的权重是0,如果该元素没有直接选中,不管父元素权重多高,子元素得到的权重都是0
权重叠加: 如果是复合选择器,则会有权重叠加,需要计算权重。

  • div ul li ------> 0,0,0,3
  • .nav ul li ------> 0,0,1,2
  • a:hover -----—> 0,0,1,1
  • .nav a ------> 0,0,1,1

二、CSS 用户界面样式

所谓的界面样式,就是更改一些用户操作样式,以便提高更好的用户体验。

2.1 鼠标样式 cursor

li {cursor: pointer; }

设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状

属性值描述
default小白 默认
pointer小手
move移动
text文本
not-allowed禁止

2.2 轮廓线 outline

给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框。

input {outline: none; }

2.3 防止拖拽文本域 resize

实际开发中,我们文本域右下角是不可以拖拽的。

textarea{ resize: none;}

三、 vertical-align 属性

3.1 vertical-align 属性应用

CSS 的 vertical-align 属性使用场景: 经常用于设置图片或者表单(行内块元素)和文字垂直对齐。

官方解释: 用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。

语法:

vertical-align : baseline | top | middle | bottom

描述
baseline默认。元素放置在父元素的基线上
top把元素的顶端与行中最高元素的顶端对齐
middle把此元素放置在父元素的中部。
bottom把元素的顶端与行中最低的元素的顶端对齐。

图片、表单都属于行内块元素,默认的 vertical-align 是基线对齐。

此时可以给图片、表单这些行内块元素的vertical-align 属性设置为middle就可以让文字和图片垂直

居中对齐了

3.2 解决图片底部默认空白缝隙问题

bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐。如下所示:

主要解决方法有两种:

1. 给图片添加 vertical-align:middle | top| bottom 等。 (提倡使用的)

2. 把图片转换为块级元素 display: block;

四、溢出的文字省略号显示

4.1 单行文本溢出显示省略号

/*1. 先强制一行内显示文本*/

white-space: nowrap; ( 默认 normal 自动换行)

/*2. 超出的部分隐藏*/

overflow: hidden;

/*3. 文字用省略号替代超出的部分*/

text-overflow: ellipsis;

4.2 多行文本溢出显示省略号

多行文本溢出显示省略号,有较大兼容性问题, 适合于webKit浏览器或移动端(移动端大部分是webkit内核)

overflow: hidden;

text-overflow: ellipsis;

/* 弹性伸缩盒子模型显示 */

display: -webkit-box;

/* 限制在一个块元素显示的文本的行数 */

-webkit-line-clamp: 2;

/* 设置或检索伸缩盒对象的子元素的排列方式 */

-webkit-box-orient: vertical;

更推荐让后台人员来做这个效果,因为后台人员可以设置显示多少个字,操作更简单。

五、常见布局技巧

5.1 margin负值的运用

我们在浮动盒子的时候,如果两个盒子都有边框,那么两个盒子的公共的那条线就会更粗一些,如下所示:

我们明显的可以看见盒子公共的那一条线会更粗,这是因为第一个盒子的右边框1px,第二个盒子左边框1px,两个盒子合起来就是2px。

我们就可以使用margin负值(margin-left:-1px;)来消除这个情况。如下所示

现在我们想要鼠标在一个盒子上方时,改变盒子边框的颜色。如下所示

但是我们鼠标在第四个盒子上面时候,会出现以下情况:

这是因为左边的盒子移动了-1px,就把第四个盒子的右边框给盖住了。

我们可以鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有有定位,则加相对定位(保留位置),如果有定位,则加z-index),就可以完美解决这个问题了。

5.2 CSS三角强化

如果我们想要构建这种盒子,那该怎么构建呢?

我们可以使用两个两个盒子,和一个三角,那这个三角怎么构建呢?

首先将border-bottom的边框去掉,然后将border-top的边框像素值改的更高一点,之后将左边框的边框去掉,然后将上边框的颜色改为透明色。就完成了

border-top: 100px solid transparent;

border-right: 50px solid red;

border-bottom: 0px solid red;

border-left: 0px solid red;

也可以把他们合起来

border-color: transparent red transparent transparent;

border-style: solid;

border-width: 100px 50px 0px 0;

<!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>.price{width: 160px ;height: 24px;border:1px solid red;   line-height: 24px;}.miaosha{position: relative;float: left;width: 90px;height: 100%;background-color: red;text-align: center;color: #fff;}.miaosha i{position: absolute;width: 0;height: 0;top: 0;right: 0px;border-color: transparent white transparent transparent;border-style: solid;border-width: 24px 10px 0px 0;}.d{font-size: 12px;color: gray;text-decoration: line-through;}</style>
</head>
<body><div class="price"> <span class="miaosha">$1650<i></i></span><span class="d">$6650</span></div>
</body>
</html>

http://www.dtcms.com/a/499142.html

相关文章:

  • git分支管理介绍和stash命令
  • 建个网站视频教程团队拓展训练感悟
  • 做网站应选那个主题龙岩微信小程序定制
  • Linux学习笔记--GPIO子系统和PinCtrl子系统
  • SpringBoot外部配置打包
  • 通达信--超级盘口
  • 基于单片机的开尔文电路电阻测量WIFI上传设计
  • 矽塔 SA8210 输入耐压36V 6A过流保护阈值 过压/过流保护芯片 SOT23-6/DFN2X2-8
  • 永年做网站收集链接 做网站
  • Linux----权限
  • 深入理解 PHP 框架里的设计模式
  • 西安网站工作室做外贸网站哪家的好
  • 如何用python写一个有字数上限的文字区块链?
  • 算能 CV184 智能相机整体方案介绍
  • 广州皮具网站建设湖南手机版建站系统信息
  • 大型网站建设哪里济南兴田德润实惠吗临沂市网站建设公司
  • Linux系统:线程介绍与POSIX线程库实现线程控制
  • ITP新增安全测试模块:构建自动化安全防护体系
  • 【C++/Lua联合开发】 (二) Lua调用C++函数
  • 基于Simulink的混动汽车模型建模与仿真,包含发动机管理,电机,电池管理以及混动汽车物理模型等
  • 网站备案都需要什么网站群项目建设实施进度计划
  • 数据库的事务和索引
  • W5500 esp32 micropython 驱动测试 网线直连电脑静态IP设置
  • 1panel docker开启swap内存
  • 动态规划的“降维”艺术:二维矩阵中的建筑奇迹——最大矩形
  • switch语句在汇编层面的几种优化方式 ,为什么能进行优化
  • Apache Spark算法开发指导-特征转换VectorIndexer
  • 企业网站的高跳出率应该如何解决广州物流网站开发
  • Docker 与 K8s 网络模型全解析
  • 【算法与数据结构】拓扑排序实战(栈+邻接表+环判断,附可运行代码)