可以给用JS生成的HTML元素添加伪元素么

可以给用JS生成的HTML元素添加伪元素么,第1张

不可以。

首先伪元素(pseudo-element)应该是CSS相关的概念。

现有的浏览器支持或尚未支持的伪元素如下:

::after

::before

::first-letter

::first-line

::selection

::backdrop

::placeholder

::marker

::spelling-error

::grammar-error

在CSS中控制伪元素使用 selector::pseudo-element,比如给div添加 ::after

div::after {

    

    content : 'x'

    

    font-size : 14px

    color : red

}

所以你通过JS生成的HTML,在CSS中定义就好。

    1、给body添加背景图,在body中添加一个父盒子(父盒子开启绝对定位),父盒子中再添加一个子盒子。

    2、给window添加鼠标移动事件,根据鼠标在浏览器中的坐标(clientX和clientY)修改父盒子的top和left,以达到移动镜面的效果。

    3、给子盒子添加背景图(和body背景图一致),在window的鼠标移动事件中修改子盒子的样式——background-position,改变子盒子中的背景图在盒子中的显示位置,使背景图的显示与body一致。

    4、再给子盒子添加缩放(transform:scale(2)),即可实现放大功能。

    1、由于背景图无法设置透明度,所以使用body的伪元素,给伪元素添加背景图和opacity属性。

    2、这时虽然给背景设置上了透明的,但却是发白的那种透明,要想变成暗沉的透明,只需要给body添加背景颜色就行。

    3、background-position的使用,由于是要将背景的选中位置移动到盒子的中心,所以使用的是负值。

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Document</title>

  <style>

    body {

      padding: 0

      background-color: #000

      margin: 0

    }

    body::after{

      display: block

      position: absolute

      top: 0

      left: 0

      content: ''

      width: 100%

      height: 100%

      background-image: url('伊芙琳.jpg')

      background-position: 0px 0px

      background-size: 100% auto

      opacity: 0.1

    }

    .magnifier {

      width: 300px

      height: 300px

      background-image: url('伊芙琳.jpg')

      background-size: 1730px auto

      background-position: 0px 0px

      transform: scale(2)

      margin: 0

      position: relative

      z-index: 100

    }

    .main {

      width: 300px

      height: 300px

      border-radius: 50%

      overflow: hidden

      position: absolute

    }

  </style>

</head>

<body>

  <div class="main">

    <div class="magnifier"></div>

  </div>

  <script>

    let flag = true

    let magnifier = document.getElementsByClassName('magnifier')[0]

    let main = document.getElementsByClassName('main')[0]

    let boxLeft = 0

    let boxTop = 0

    window.onmousemove = (event) => {

      if(!flag) return

      setTimeout( ()=>{

          flag = true

      },50)

      console.log(event.clientX, event.clientY)

      if(event.clientX > 1590) {

        event.clientX = 1590 

      }

      boxLeft =  event.clientX > 1590 ? '1440px' : event.clientX > 150 ? event.clientX - 150 + 'px':'0px'

      boxTop = event.clientY > 720 ? '575px' : event.clientY > 150 ? event.clientY - 150 + 'px':'0px'

      main.style.left = boxLeft

      main.style.top = boxTop

      // magnifier.style.backgroundPosition = '830px 570px'

      magnifier.style.backgroundPosition = '-' + boxLeft + ' ' + '-' + boxTop

      flag = false

    }

  </script>

</body>

</html>

content:,顾名思义,这是定义伪元素内容的

: before(或:after)伪元素选择器用于在某个元素之后插入一些内容(注意,不是伪类)。

怎么说好呢,这个还是得看个人理解,我是这样认为得,其实就是用after 或者before去调用引用content里面原有得样式。 面对做得好得网页,我有得时候也会想这个是怎么做得。。。然后F12学习下= = 第一张图得UL的class 属性里面应该有.clearfix 这个样式名的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11708494.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存