首页 > 其他分享 >css中伪元素使用

css中伪元素使用

时间:2023-12-11 20:03:49浏览次数:30  
标签:元素 solid after 中伪 content 1px border css

1. :after    ::after 单双引号的区别

其实无论是单引号还是双引号,他们的本质都是伪元素,只不过因为伪类使用的也是单引号,同时他们的写法类似,写法也相仿,但实际上 css3 为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。

但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者。

2.使用伪元素需要注意的问题

在内容模块中提到,伪元素如果没有设置“content”属性,伪元素是无用的。

使用伪元素插入的内容在页面的源码里是不可见的,只能在css里可见。

插入的元素在默认情况下是内联元素(或者,在html5中,在文本语义的类别里)。因此,为了给插入的元素赋予高度,填充,边距等等,你通常必须显式地定义它是一个块级元素。

还要注意的是典型的 CSS 继承规则适用于插入的元素。例如,你有字体系列黑体,宋体,无衬线字体应用到 body 元素里,然后伪元素会像其他元素一样继承这些字体系列。

伪元素不会自然继承自父元素(如 padding margins)的样式。

你的直觉是 :before 和 :after 伪元素可能是插入的内容会被注入到目标元素的前或后注入。其实不是这样的,注入的内容将是有关联的目标元素的子元素,但它会被置于这个元素的任何内容的“前”或“后”。来看下面这样一个栗子:

<head>
    <title></title>
    <style type="text/css">
        p.box {   
          width: 300px;   
          border: solid 1px black;   
          padding: 20px;   
        }   

        p.box:before {   
          content: "#";   
          border: solid 1px black;   
          padding: 2px;   
          margin: 0 10px 0 0;   
        }
    </style>
</head>
<body>
<p class="box">Other content.</p>  
</body>

外面的盒子是这个段落。围绕有散列符号的边框表示伪元素的边界。所以,不是插入“before”到段落,而是伪元素被置于到此段落的“Other content”的前面。

记住伪元素必须是被应用元素的子元素。

伪元素不会出现在DOM中,这些元素不是真正的元素。因此,它们不是可用的。所以,不要使用伪元素生成内容,是你的网页的可用性和可访问性的关键。

另外一件需要记住的是,开发工具,例如火狐,不要用伪元素显示内容。所以,如果使用了,伪元素会造成难以维护和调试缓慢。

3.使用 after 伪类清除浮动

使用 after 伪类清除浮动也是目前清除浮动的主流方法,其使用方式如下:

未清除浮动之前:

<head>
    <title></title>
    <style type="text/css">
        .container{
            border: 1px solid;
        }
        .subCon{
            width: 100px;
            height: 100px;
            background-color: yellow;
            float: left;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="subCon"></div>
    </div>
</body>

可以看出此时因为给子级添加了浮动,所以父级并没有包住子元素。

使用 after 伪类清除浮动:

<head>
    <title></title>
    <style type="text/css">
        .container{
            border: 1px solid;
        }

        .clear:after{
            content: "";
            display: block;
            clear: both;
        }
        .subCon{
            width: 100px;
            height: 100px;
            background-color: yellow;
            float: left;
        }
    </style>
</head>
<body>
    <div class="container clear">
        <div class="subCon"></div>
    </div>
</body>

但是问题又来了,使用 after 伪元素在元素末尾添加内容在 IE6 和 IE7 下是不兼容的。

这个时候就要使用到 zoom 缩放来触发 IE 下的 haslayout ,使元素根据自身内容计算宽高。

要注意:在 IE6,IE7 下,父级元素有宽高是不用清浮动的。

兼容性处理:

<head>
    <title></title>
    <style type="text/css">
        .container{
            border: 1px solid;
        }

        /*在这里请浮动*/
        .clear:after{
            content: "";
            display: block;
            clear: both;
        }

        /*在这里进行兼容性处理*/
        .clear{
            *zoom:1;
        }
        .subCon{
            width: 100px;
            height: 100px;
            background-color: yellow;
            float: left;
        }
    </style>
</head>
<body>
    <div class="container clear">
        <div class="subCon"></div>
    </div>
</body>

注意:是在父级上使用 after 伪类。

4.使用伪元素插入文本内容

<head>
    <title></title>
    <style type="text/css">
        p.box {   
          width: 300px;   
          border: solid 1px black;   
          padding: 20px;   
        }   

        p.box:before {   
          content: "#";   
          border: solid 1px black;   
          padding: 2px;   
          margin: 0 10px 0 0;   
        }
    </style>
</head>
<body>
<p class="box">Other content.</p>  
</body>

5.使用伪元素插入非文本内容

/* 使用伪元素插入图片 注意:url里面的内容没有引号*/
p:before{
        content: url(image.jpg);
}


标签:元素,solid,after,中伪,content,1px,border,css
From: https://blog.51cto.com/u_16281588/8776863

相关文章

  • java 数组添加元素的两种方法
    方式一:创建一个新数组,长度为原数组加1,然后将原数组数据添加到新数组,最后再添加需要的新数据 @Testpublicvoidredd111(){String[]s1={"aaa","bbb","ccc"};String[]s2=newString[s1.length+1];for(inti=0;i<s1.length;i++){......
  • JAVA 给数组添加元素
    组是不可变长度,那么已经定义的数组,怎么添加元素呢?//1.已有的数组column和list集合String[]column={"身份证号","员工编号","姓名"};List<String>list=newArrayList<>();list.add("奖金");list.add("提成&q......
  • Python语言合并列表元素常用的方法!
    众所周知,列表是Python中常见的数据类型,它可以存储多个元素。但由于某种需求,我们有时候需要将多个元素进行合并,那么Python语言如何合并列表中的元素?以下是常用方法介绍。1、使用+运算符在Python中,可以使用+运算符将两个列表的元素合并成一个新的列表。例如,假设有两个列......
  • php css 改变宽度,img标签设置display:block属性时宽度无法设定为100%的解决办法
    本篇文章所说的内容是img标签设置display:block属性时宽度无法设定为100%的解决办法,方法很详细,有一定的参考价值,有需要的朋友可以参考一下,希望可以对你有所帮助。现象如下代码,img标签设置了display:block,尺寸宽度无法设定为100%img标签设置display:block,宽度无法100%原因替换......
  • 将绑定到itemsource的控件里面的元素绑定到itemsource数据源之外的viewmodel中的数据
    1<ComboBox.ItemTemplate>2<DataTemplate>3<StackPanelOrientation="Horizontal">4<TextBlockWidth="100"Text="{BindingKey}"/>5<ButtonContent="X"......
  • CSS让整个网站变成灰色的做法
    CSS让整个网站变成灰色的做法方法一:直接在css样式文件里加上这段代码html{-webkit-filter:grayscale(100%);filter:progid:DXImageTransform.Microsoft.BasicImage(graysale=1);}<!–可以是整个网站变成灰色的–>方法二:可以直接插入到网页/模板文件里html{filter:progidXImag......
  • 图片铺满div元素不变形,超出部分隐藏,保留中心部分css代码
    在我们网站更新文章的时候,经常会插入图片,丰富信息。但是我们插入的图片长宽比例并不一定是固定的。我们在调用缩略图的时候,常常会出现图片变形的情况,高和宽不成比例。那么如何让图片不变形,又能铺满div元素呢?我们可以使用css代码中object-fit属性来实现。object-fit属性指定元素的......
  • 231-js 动态创建a元素,点击a后,打开新页签,下载文件
    functiondownloadFile(){constlink=document.createElement('a');link.href='your_file_url';//替换为要下载的文件的URLlink.target='_blank';link.download='file_name';//替换为要保存的文件名document.body.appendChi......
  • 如何屏蔽网页广告(网页中的特定元素)
    目录1.原因2.选择一个合适的过滤器3.自定义规则3.1.为什么要自定义3.2.如何自定义规则第一步:打开元素审查第二步:确认要屏蔽的元素第三步:编写规则参考1.原因非常讨厌百度页面的“百度热搜”栏目,影响了我的工作效率,因此想要找个方式屏蔽掉它2.选择一个合适的过滤器首先......
  • css:两个行内块元素和图片垂直居中对齐
    (目录)两个行内块元素垂直居中对齐先看一段代码:<style>.box{width:200px;height:200px;line-height:200px;font-size:20px;text-align:center;display:inline-block;background-color:green;}</style><divclass="box&q......