用hover配合(纯css)position实现网页动态展示效果

使用hover配合纯CSS的position属性,可以实现许多网页动态展示效果,如悬停弹出层、下拉菜单等。下面是一份关于如何用hover配合CSS动画实现此类效果的攻略。

准备环境

首先,我们需要准备一个HTML文件。我们可以在文件中定义一个div元素,后面的动态效果将会在其中实现。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Hover+CSS Position动态效果</title>
  <style>
    /* 初始化样式 */
    * {
      margin: 0;
      padding: 0;
    }

    /* 悬停块样式 */
    .hover-box {
      position: relative; /* 定位父元素 */
      display: inline-block;
    }

    /* 弹出块样式 */
    .pop-box {
      position: absolute; /* 定位子元素 */
      top: 100%;
      left: 0;
      margin-top: 10px;
      padding: 10px;
      background-color: #FFF;
      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
      opacity: 0; /* 初始化不可见 */
      visibility: hidden;
      transition: all 0.4s; /* 动画过渡效果 */
    }

    /* hover效果 */
    .hover-box:hover .pop-box {
      opacity: 1; /* 渐变显示 */
      visibility: visible;
      transform: translateY(0); /* 下移弹出 */
    }

  </style>
</head>

<body>
  <div class="hover-box">
    <a href="#">悬停弹出层</a>
    <div class="pop-box">
      <p>这是弹出层的内容</p>
    </div>
  </div>
</body>

</html>

实现过程

在上面的HTML文件中,我们定义了一个包含一个标题和一个下拉菜单的容器div。设置悬停弹出层的CSS样式:

/* 悬停块样式 */
.hover-box {
  position: relative; /* 定位父元素 */
  display: inline-block;
}

/* 弹出块样式 */
.pop-box {
  position: absolute; /* 定位子元素 */
  top: 100%;
  left: 0;
  margin-top: 10px;
  padding: 10px;
  background-color: #FFF;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
  opacity: 0; /* 初始化不可见 */
  visibility: hidden;
  transition: all 0.4s; /* 动画过渡效果 */
}

悬停块hover-box使用position: relative来定位。弹出块pop-box使用position: absolute属性配合top: 100%left: 0来使它相对于悬停块hover-box定位。设置opacity: 0visibility:hidden来初始化隐藏弹出块。此时,弹出块的top属性指向悬停块的底部,margin-top表示弹出块和悬停块之间的间距。

最后,我们加上.hover-box:hover效果,使弹出块在鼠标悬停时下移、渐变显示。

/* hover效果 */
.hover-box:hover .pop-box {
  opacity: 1; /* 渐变显示 */
  visibility: visible;
  transform: translateY(0); /* 下移弹出 */
}

:hover伪类指定了当鼠标悬停在悬停块hover-box上时,其内部的弹出块会显示。

示例说明

下面我们通过两个示例来进一步演示使用hover配合CSS定位属性实现的动态展示效果。

悬停弹出块

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>悬停弹出块</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .hover-box{
            position: relative;
            display: inline-block;
        }
        .pop-box{
            position: absolute;
            top: 100%;
            left: 0;
            margin-top: 5px;
            padding: 10px;
            min-width: 80px;
            background-color: #fff;
            box-shadow: 0 2px 4px rgba(0,0,0,0.2);
            opacity: 0;
            visibility: hidden;
            transition: all 0.3s ease-out;     
        }
        .hover-box:hover .pop-box{
            opacity: 1;
            visibility: visible;
            transform: translateY(0);
        }
    </style>
</head>
<body>
    <div class="hover-box">
        <a href="#">11悬停弹出层</a>
        <div class="pop-box">
            <p>11这是弹出层的内容</p>
        </div>
    </div> 
    <div class="hover-box">
        <a href="#">22悬停弹出层</a>
        <div class="pop-box">
            <p>22这是弹出层的内容</p>
        </div>
    </div> 
</body>
</html>

以上代码演示了如何在鼠标悬停时使弹出层渐现,并实现微小缓冲效果。

下拉菜单

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>下拉菜单</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      list-style: none;
    }

    .menu {
      display: inline-block;
      position: relative;
    }

    .menu > a {
      display: block;
      padding: 10px 20px;
      background-color: #f5f5f5;
      border: 1px solid #DDD;
      color: #333;
      text-decoration: none;
    }

    .submenu {
      position: absolute;
      top: 100%;
      left: 0;
      background-color: #FFF;
      border: 1px solid #DDD;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s;
    }

    .menu:hover .submenu {
      visibility: visible;
      opacity: 1;
    }

    .submenu > li > a {
      display: block;
      padding: 10px 20px;
      color: #333;
      text-decoration: none;
    }

    .submenu li:hover a {
      background-color: #efefef;
    }
  </style>
</head>
<body>
  <div class="menu">
    <a href="#">一级菜单</a>
    <ul class="submenu">
      <li><a href="#">二级菜单1</a></li>
      <li><a href="#">二级菜单2</a></li>
      <li><a href="#">二级菜单3</a></li>
    </ul>
  </div>
</body>
</html>

上面的代码演示了一个简单的下拉菜单,其中一级菜单是通过a元素实现的。在:hover伪类中,我们添加了样式,当鼠标悬停在“一级菜单”上时,显示下拉列表。

总结

通过CSS的hover和position属性,我们可以方便地实现很多动态展示效果,例如悬停显示、下拉菜单等。想要获得更加复杂的效果,可以使用JavaScript等前端技术进行实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用hover配合(纯css)position实现网页动态展示效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • Go模板template用法详解

    下面我将详细讲解一下“Go模板template用法详解”的完整攻略。 什么是Go模板template? Go模板(template)是一个文本量不大但是功能却相当强大的模板引擎,主要用于生成HTML以及其他类型的文本文件。它是Go语言自带的功能强大的模板引擎,可以根据数据生成任何格式的文本输出,例如HTML、XML、CSS、JavaScript等。 Go模板…

    css 2023年6月9日
    00
  • 网页制作中注意应用HTML标签的问题

    当你在进行网页制作时,HTML标签的使用是非常重要的。以下是一些注意事项,以及应用HTML标签的方法和示例。 一、HTML标签使用注意事项 标签必须小写,不允许大写; 标签必须有开始标签和结束标签,除特殊情况外不得单标签闭合; 标签必须合法嵌套,即嵌套关系必须正确,不能互相穿插; 标签必须包容性好,即可以嵌套HTML标准规定的所有标签,除特定情况外不能出现标…

    css 2023年6月10日
    00
  • CSS设计之页面滚动条出现时防止页面跳动的方法

    标题:CSS设计之页面滚动条出现时防止页面跳动的方法 当页面内容过多,超出浏览器可视范围时,会出现滚动条。但是在实际应用中,页面滚动条出现时,页面的布局可能会因为滚动条的出现而发生跳动,影响用户的体验。本文将介绍两种方法,来防止页面出现滚动条时的跳动问题。 方法一:使用vw作为单位 在CSS中使用vw作为单位,将CSS中的所有尺寸都定义为vw,可以确保页面布…

    css 2023年6月10日
    00
  • css3 flex实现div内容水平垂直居中的几种方法

    针对“CSS3 flex 实现 div 内容水平垂直居中的几种方法”,我为您提供以下完整攻略: 1. 使用flex布局 设置外层父元素的display:flex; justify-content:center; align-items:center;,这样,子元素就实现了垂直水平居中。 .container { display: flex; justify-…

    css 2023年6月9日
    00
  • css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单

    为了实现可折叠导航菜单,需要使用CSS3和jQuery。下面是实现可折叠导航菜单的完整攻略。 使用HTML结构元素和CSS样式创建可折叠的导航菜单 使用HTML结构元素创建一个列表,其中每个列表项代表一个导航菜单条目。例如: <ul> <li><a href="#">Home</a><…

    css 2023年6月10日
    00
  • CSS网页布局入门教程8:三列浮动中间列宽度自适应

    下面我将为你详细讲解“CSS网页布局入门教程8:三列浮动中间列宽度自适应”的完整攻略。 一、什么是三列浮动中间列宽度自适应布局? 三列浮动中间列宽度自适应布局指的是一个网页布局中有三列,其中左右两列宽度固定,中间列的宽度则根据页面的大小自适应调整。这种布局常用于网页中要展示大量信息的情况,如新闻页面或个人博客。 二、如何实现三列浮动中间列宽度自适应布局? 实…

    css 2023年6月9日
    00
  • 基于vue中的scoped坑点解说

    下面详细讲解基于Vue中的scoped样式坑点解说。 什么是scoped样式 在Vue中,我们可以使用scoped样式来局部作用于某个组件,而不会影响全局样式。scoped样式通过在样式文件中添加<style scoped>来声明。 scoped样式的应用 使用scoped样式在Vue组件中可以很好地控制样式,避免样式冲突,具体示例如下: &lt…

    css 2023年6月10日
    00
  • VueJS如何引入css或者less文件的一些坑

    VueJS如何引入CSS或者LESS文件的一些坑 在VueJS中,引入CSS或者LESS文件是非常常见的操作。然而,在实际开发中,可能会遇到一些坑,例如样式不生效、样式冲突等问题。本攻略将详细讲解VueJS如何引入CSS或者LESS文件的一些坑,包括基本用法、注意事项和示例说明。 1. 基本用法 在VueJS中,可以使用<style>标签或者&l…

    css 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部