首页 > 其他分享 >14伪元素-CSS的继承和层叠-元素特性

14伪元素-CSS的继承和层叠-元素特性

时间:2024-12-18 12:57:57浏览次数:8  
标签:行内 14 元素 div 选择器 CSS 属性

一、之前剩下的东西

上节讲解了CSS常见的选择器:通用选择器,元素选择器,类选择器,id选择器,属性选择器,组合选择器,伪类选择器
之前讲到伪类选择器非常多,但是使用的却不多,上次主要讲到动态伪类,其中:hover最重要。
1、伪元素pseudo-elements
常用的伪元素是:
:first-line
::first-line

:first-letter
::first-letter

:before
::before

:after
::after
伪元素能帮助我们做什么呢?
这里支持两种写法,推荐写的是两个冒号,因为之前伪类的时候写的是一个冒号,为了区分还是写两个冒号比较好。
首先前两个伪元素,
::first-line选中的是首行的元素:
之前对一个东西进行强调的时候我们是使用span进行包裹,然后添加样式,我们要求的是对于首行的所有东西进行强调,如果我们直接指定首行span包裹,
这样文字会变大,其他文字会被挤到下一行去。

所以不应该通过span包裹然后添加样式,如果要选中第一行可以使用::first-line,然后通过交集选择器找到指定的元素

::first-letter是对于首字母的设置:

如果是汉字选中的就是第一个字


2、::before和::after这两个伪元素比较常用
::before和::after用来在一个元素的内容之前或者之后插入其他内容(可以是文字,图片)
通常通过content属性给一个元素添加修饰性的内容。
我们在一个元素的前面和后面插入东西的时候,如果想要在很多元素的前面和后面插入东西也是在前面后面重新编写元素。


通过伪元素的方式在前面插入321

通伪元素的方式在后面插入cba

如果和直接插入的进行对比发现直接添加的方式是有空格的,但是通过伪元素的方式是没有空格的,其原因是因为编写代码的时候
box和box2的div之间写了一个空行。
现在这里我们使用的是交集选择器,比如前面的.box3::before这样不够通用,可以改成item
需要更改的元素都添加一个item

使得更加通用和方便。
tip:如果content需要引入一个.svg矢量图标可以通过:

后面就会有一个矢量图

可以看到现在的矢量图的位置不是很好看,可以来一个相对定位(这个后面再讲)
position:relative;


对一些东西做微调的时候会使用到相对定位。
最后还有一个东西需要强调:为元素的补充,在一个元素后面添加东西的时候使用::after,添加的时候如果要添加一个8*8的正方形
可以

但是这里的content不能删除,一旦删除,这个正方形就不会显示
并且display: inline-block;也不能省略,这样就不能设置宽和高了。

二、今天要学习的东西

关于CSS属性的特性,比如CSS属性的继承性,CSS属性的层叠,CSS属性的类型,display属性,元素的隐藏,overflow属性
然后是CSS的盒子模型,认识盒子模型,内容width/height,内边距padding,边框/圆角border,外边距margin,盒子和文字阴影,box-sizing
1、CSS属性的特性,主要讲继承,层叠,元素类型
1.1CSS的属性继承
CSS的某些属性具有继承性inherited
如果一个属性具备继承性,那么在改元素上设置之后,它的后代元素都可以继承这个属性;
当然,如果后代元素自己有设置该属性,那么优先使用后代元素自己的属性(不管继承过来的属性权重多高);
1.1.1 CSS的默认继承
有的元素之间是可以嵌套的,如果现在存在这样的一个嵌套关系:

现在这里形成了父子关系,div是父亲,这样的一个嵌套关系下,现在有一个需求,需要给div下面的所有子元素的color设置颜色
我们可以通过元素选择器来做:

这样做虽然能够完成,但是存在大量的重复代码
另外可以使用并集选择器:

但是如何div下面的子元素非常多呢?

如果单独给div设置了这些样式其后代的所有元素都会继承这个属性。
也就是如果这个属性具备继承性,那么所有后代元素都会继承这个属性。
一个属性是否具备继承性呢?
常见的font-size/font-family/font-weight/line-height/color/text-align都具有继承性;
这些不用刻意记忆,用的多了自然记住了。
另外要多查看文档,文档中每个属性都有标明其继承性的。

文档中确实是说明color具备继承性的
一般情况下和字体相关的东西都是可以继承的。
1.1.2常见的继承属性有哪些呢?(不用记忆)
tip:
这里从哪里继承过来的属性,在chrome浏览器的调试工具中其实是可以看到的。

还有一点是继承过来的属性是计算值,不是设置值。
这个东西如何理解呢?


上述这个继承可以看到是一个灰色的,确实是没有继承的,
但是我们就是想要继承呢?可以强制的继承,但是这个很少用。

总结:cSS有些属性是具备继承性的有的是没有继承性的

1.2CSS属性的层叠
CSS的翻译是层叠样式表,什么是层叠呢?
对于一个元素来说,相同的一个属性我们可以通过不同的选择器给它进行多次设置;
那么属性会被一层层覆盖上去;
但是最终只会有一个会生效,感觉就像是刷油漆一样。

比如这个,最终是orange生效了。
这就带来一个问题,到底哪一个会生效呢?
判断方法一:根据选择器的权重
所谓权重就是一个优先级的大小,到底谁的权重大呢?
判断方法二:权重是一样的,这个时候根据先后顺序来判断
即后设置的会生效。
1.2.1CSS选择器的权重
我们如何知道选择器的权重。按照我们的经验,为了方便比较CSS属性的优先级,可以给CSS属性所处的环境定义一个权重
!important: 10000
内联样式:1000
id选择器:100
类选择器,属性选择器,伪类:10
元素选择器,伪元素:1
通配符:0
!important这个东西的权重是最高的,权重是10000,一万,如果多个都有就进行第二层的比较,但是很少出现,后面我们遇到特殊场景会使用
然后第二个是内联样式,内联样式的权重是1000
id选择器的权重是100

然后是类选择器,类选择器也包括伪类选择器,权重是10
元素选择器包括伪元素,权重是1,然后统配选择器
权重是零,表示低,不代表没有
权重是可以累加的

1.3HTML元素的类型
这个概念必须要理解,在前面我们会经常提到div是块级元素会独占一行,span元素是行内级元素会在同一行显示。
到底什么是块级元素,什么是行内级元素呢?
HTML定义元素类型的思路:
HTML元素有很多,比如h元素,p元素,div元素,span元素,img元素,a元素等等;
当我们把这个元素放到页面上时,这个元素到底占据页面中一行多大的空间呢?
为什么我们这里只说一行呢?因为垂直方向的高度通常是由内容决定的;
比如一个h1元素的标题,我们必然是希望它独占一行的,其他的内容不应该和我们的标题放在一起;
比如一个p元素的段落,必然也是独占一行的,其他的内容不应该和我们的段落放在一起;
然后类似于img/span/a元素通常是对内容的某一个细节的特殊描述,没有必要独占一行。
h元素,p元素,div元素这些元素都是块级元素block level,这些元素一般都比较重要独占一行显示;
还有某些元素属于内容的一部分:没有必要独占一行,其他的内容在同一行显示,类型是行内级元素inline level
常见的行内级元素有span,a,img,strong,i元素等
所以为了,区分哪些元素需要独占一行,哪些元素不需要独占一行,HTML将元素区分,本质是通过CSS区分,将其分成了两大类:
块级元素block-level elements:独占父元素的一行
行内级元素inline-level elements:多个行内级元素可以在父元素的同一行显示
1.3.1 HTML元素类型的修改

前面我们说过,元素之间是没有本质的区别的,都是浏览器添加的样式让这些元素发生了改变,

我们可以将块级元素的div更改,即通过层叠的方式,

当前div变成了行内级元素

从之前的独占一行变成了同行显示
同样,如果想要让span变得牛逼一点,独占一行也可以添加一个display:block;
在CSS中的这个display属性能够修改元素的显示类型,有四个常用的值:
block是让元素显示为块级元素
inline是让元素显示为行内级元素
inline-block是让元素同时具备行内级,块级元素的特征
none隐藏元素
刚才说到将一个元素的display设置成block的时候独占一行,inline的时候和其他的行内级元素同一行显示
接下来强调一点,块级元素是可以设置宽度和高度的,但是行内级元素是不能设置宽度和高度,宽度和高度是由内容决定的

这里为什么还能独占一行是因为有一个margin-right:auto;auto会自动地适配浏览器,剩下的宽度自动填充。
行内级元素不能设置宽度和高度是不严谨的,img元素是一个行内级元素,并且还是一个替换元素,叫做行内替换元素,
和其他的行内级元素在同一行显示,可以设置宽度和高度。
并且后面讲到的video也是,input也是,这些后面讲解。
总结:

三、编写HTML的时候的注意事项

默认一些元素是有自己的类型的,不要在p元素中放div元素

会显得很乱。
所以块级元素,inline-block元素
一般情况下,可以包含其他任何元素,比如块级元素,行内级元素,inline-block元素
特殊情况下,p元素不能包含其他块级元素
行内级元素,比如a,span,strong等
一般情况下,只能包含行内级元素

标签:行内,14,元素,div,选择器,CSS,属性
From: https://www.cnblogs.com/wumouhao/p/18614633

相关文章

  • 前端必知必会-JavaScript HTML DOM 元素(节点)
    文章目录JavaScriptHTMLDOM元素(节点)添加和删除节点(HTML元素)创建新的HTML元素(节点)创建新的HTML元素-insertBefore()删除现有HTML元素删除子节点替换HTML元素总结JavaScriptHTMLDOM元素(节点)添加和删除节点(HTML元素)创建新的HTML元素(节点)要向HT......
  • css如何实现滚动条隐藏但鼠标仍然可以滚动?
    你可以使用CSS的::-webkit-scrollbar伪元素选择器来隐藏滚动条,同时保持滚动功能。这个选择器主要用于WebKit内核的浏览器,如Chrome和Safari。虽然这不是一个标准的CSS特性,但在很多实际项目中,这种方法被广泛使用。以下是一个简单的例子:/*隐藏滚动条,但保留滚动功能*/.your-eleme......
  • 举例说明css中负值有哪些好玩的特性
    在CSS中,负值可以带来很多有趣的效果和特性。以下是一些使用负值在前端开发中创建有趣效果的例子:负边距(NegativeMargin):负边距在布局中可以发挥巨大的作用。例如,你可以使用负边距来重叠元素,或者调整元素之间的间距。.element{margin-top:-20px;}这会使元素向上移动2......
  • 使用css实现一个毛玻璃效果
    在前端开发中,使用CSS实现毛玻璃效果(也被称为模糊效果)通常涉及到backdrop-filter属性,该属性可以让你对元素后面的区域应用图形效果,如模糊或明亮度降低。以下是一个简单的示例,展示如何使用CSS创建一个毛玻璃效果:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><m......
  • 《Django 5 By Example》阅读笔记:p614-p644
    《Django5ByExample》学习第22天,p614-p644总结,总计31页。一、技术总结1.功能:students应用2.缓存Django自带的缓存有:(1)backends.memcached.PyMemcacheCache(2)backends.redis.RedisCache(3)backends.db.DatabaseCache(4)backends.filebased.FileBasedCache(5......
  • 如何隐藏元素的滚动条?
    在前端开发中,隐藏元素的滚动条通常可以通过CSS样式来实现。具体方法取决于你想要隐藏滚动条的场景和浏览器兼容性需求。以下是一些常见的方法:使用overflow属性:通过设置元素的overflow属性为hidden,可以隐藏滚动条并阻止内容溢出。但请注意,这也会阻止用户通过滚动查看超出元素边......
  • 浙江工商大学 ZJGSU OJ 2514. 我找还是你找
    目录题面思路重点代码题面2514.我找还是你找描述某公司仓库从有很多刚生产出来的棍子,小Y要从仓库中找到这样一根棍子,这根棍子的要求如下(优先级1>2>3):1、这根棍子一定要是仓库中最长的;2、这根棍子一定要是最长的棍子中最细的;3、这根棍子一定要是符合前两条的......
  • 程序员都解决不了的问题“找不到vcruntime140.dll,无法继续执行代码”要怎么解决?“缺失
    电脑运行疑难杂症大揭秘:如何应对“找不到vcruntime140.dll,无法继续执行代码”的困扰?在探索数字世界的旅途中,每位软件开发者和电脑用户都可能遭遇过各式各样的系统报错与文件问题。今天,我们就来深入探讨一个常见却让人头疼的错误——“找不到vcruntime140.dll,无法继续执行代码......
  • 14. 最长公共前缀
    题目链接解题思路:用第一个字符串的每个字符,逐个比较其他字符串,注意别越界就行代码classSolution{public:stringlongestCommonPrefix(vector<string>&strs){stringans="";intlen=strs[0].length();intn=strs.size();......
  • 360.大学生HTML5期末大作业 —【漫威电影网站(页)】 Web前端网页制作 html5+css3+js
    目录一、网页简介二、网页文件三、网页效果四、代码展示1.html2.CSS3.JS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强欢迎来到我的CSDN主页!您的支持是我创作的动力!Web前端网页制作、网页完整代码、大学生期末大作业案例模板完整代码、技术交......