html+css制作一个具有视差效果的主页

html+css制作一个具有视差效果的主页

这篇文章是根据我在b站上跟着一个大佬做的视频做了一个具有视差效果的页面之后的记录。

html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="../css/style.css">
  <title>Document</title>
</head>
<body>
  <div class="pimg1">
    <div class="ptext">
      <span class="border">
        image 1
      </span>
    </div>
  </div>
  <!-- section标签是html5新增标签,是用来定义文档的某个区域
    (如:章节、页眉、页脚或者文档的其他区域)。 -->
  <section class="section section-Light">
    <h2>Hello</h2>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. 
      Excepturi repellendus quasi autem, magnam aperiam reiciendis sequi
       omnis incidunt explicabo. Blanditiis quis, reprehenderit itaque rerum
        temporibus omnis fuga necessitatibus atque, dolore maxime impedit quae
         deserunt provident ipsum enim. Nam asperiores earum praesentium pariatur
          amet possimus quasi et quibusdam facere beatae quaerat voluptatibus non, 
          inventore doloribus autem odio impedit cumque doloremque expedita modi
           quas aliquam necessitatibus architecto? Eveniet nobis excepturi dolorum
            qui animi dicta neque magni, ipsam veritatis et sunt a necessitati
            bus!</p>
  </section>
  <div class="pimg2">
    <div class="ptext">
      <!-- <span> 标签被用来组合文档中的行内元素 -->
      <span class="border">
        image 2
      </span>
    </div>
  </div>
  <section class="section section-dark">
    <h2>World</h2>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. 
      Excepturi repellendus quasi autem, magnam aperiam reiciendis sequi
       omnis incidunt explicabo. Blanditiis quis, reprehenderit itaque rerum
        temporibus omnis fuga necessitatibus atque, dolore maxime impedit quae
         deserunt </p>
  </section>
  <div class="pimg3">
    <div class="ptext">
      <span class="border">
        image 3
      </span>
    </div>
  </div>
  <section class="section section-Light">
    <h2>javaScript</h2>
    <p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. 
      Excepturi repellendus quasi autem, magnam aperiam reiciendis sequi
       omnis incidunt explicabo. Blanditiis quis, reprehenderit itaque rerum
        temporibus omnis fuga necessitatibus atque, dolore maxime impedit quae
         deserunt </p>
  </section>
  <div class="pimg4">
    <div class="ptext">
      <span class="border">
        image 4
      </span>
    </div>
  </div>
</html>

css

body,html{
  height: 100%;
  margin: 0;
  font-size: 16px;
  font-family: Arial, Helvetica, sans-serif;
  /* 行高 */
  line-height: 1.8em;
  color: #666;
}
.pimg1,.pimg2,.pimg3,.pimg4{
  position: relative;
  /* opacity 不透明度 */
  opacity: 0.7;
  /* 图片定位  居中*/
  background-position: center;
  /* 图片尺寸 全覆盖 */
  background-size: cover;
  /* 设置图片为不重复 */
  background-repeat: no-repeat;
  /* 视差效果显示,将图片固定 */
  background-attachment: fixed;
}
.pimg1{
  background-image: url('../images/yh.jpg');
  min-height: 100%;
}

.pimg2{
  background-image: url('../images/city1.jpg');
  min-height: 400px;
}

.pimg3{
  background-image: url('../images/city2.jpg');
  min-height: 400px;
}

.pimg4{
  background-image: url('../images/city3.jpg');
  min-height: 100%;
}

.section{
  text-align: center;
  padding: 50px 80px;
}

.section-Light{
  background: #f4f4f4;
  color: #666;
}

.section-dark{
  background: #282e34;
  color: #ddd;
}

.ptext{
  position: absolute;
  top: 50%;
  width: 100%;
  text-align: center;
  color: #000;
  font-size: 27px;
  /* 字间距 */
  letter-spacing: 8px;
  /* 将字母全部变为大写 */
  text-transform: uppercase;
}

.pimg1 .ptext span{
  background-color: #111;
  color: #fff;
  padding: 20px;
}

.pimg4 .ptext span{
  background-color: #111;
  color: #fff;
  padding: 20px;
}
/* 响应式取消视差效果 当页面宽度小于500px的时候,取消图片的固定*/
@media(max-width: 500px){
  .pimg1,.pimg2,.pimg3,.pimg4{
    background-attachment: scroll;
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要准备一张背景图片,并将其设置为页面背景。 然后,创建一个容器元素,用于包含需要倾斜的图片。 接着,使用CSS3的transform属性对该容器元素进行倾斜变换。可以使用rotateX()或rotateY()函数来实现。 最后,使用CSS3的hover伪类选择器,对鼠标移动事件进行响应,通过改变容器元素的transform属性值,实现视差效果。 以下是示例代码: HTML: ``` <body> <div class="container"> <img src="image.jpg" alt="image"> </div> </body> ``` CSS: ``` body { background-image: url(background.jpg); background-size: cover; background-position: center; } .container { width: 300px; height: 300px; margin: 50px auto; perspective: 1000px; transform-style: preserve-3d; transition: transform 0.5s ease-out; } .container:hover { transform: rotateY(10deg) rotateX(-10deg); } img { width: 100%; height: 100%; object-fit: cover; transform: translateZ(150px); } ``` 解释一下代码: 1. 设置页面背景为一张背景图片,使用background-image属性。 2. 创建一个宽高为300px的容器元素,并将其居中对齐。使用perspective属性为容器元素设置透视距离,使其有3D效果。使用transform-style属性设置元素的transform属性应用于其子元素。使用transition属性为容器元素的transform属性设置动画效果。 3. 使用:hover伪类选择器,对容器元素鼠标移动事件进行响应。使用rotateY()和rotateX()函数改变容器元素的transform属性值,实现倾斜效果。 4. 在容器元素内部添加一个img元素,并将其设置为100%宽高的图片,使用object-fit属性使图片填充整个容器元素。使用translateZ()函数将图片推向远离用户的位置,使其在3D空间中呈现出合适的位置。 效果如下图所示: ![视差图片倾斜特效](https://cdn.jsdelivr.net/gh/1071942338/picgo-repo/img/20210918165954.png)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值