用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日

相关文章

  • CSS解决页面图片水平垂直居中问题的方法

    CSS解决页面图片水平垂直居中问题是Web开发中常见的需求,那么该怎样解决呢?以下是完整攻略: 方法一:使用绝对定位和负边距 我们可以使用绝对定位将图片的左上角定位在父元素的正中间,再使用负边距将图片向中心移动,从而实现水平垂直居中。示例代码如下: <div class="container"> <img src=&qu…

    css 2023年6月10日
    00
  • css使用overflow属性控制滚动条的样式

    下面是关于 CSS 使用 overflow 属性控制滚动条样式的详细攻略。 什么是 overflow 属性 CSS 中的 overflow 属性用于控制元素内容溢出时的处理方式。如果一个元素的内容超出了它的区域,那么就会出现滚动条,overflow 可以决定这个滚动条的样式、是否显示等。 使用 overflow 控制滚动条样式 控制滚动条的样式 默认情况下,…

    css 2023年6月9日
    00
  • 只要1K 纯JS脚本送你一朵3D红色玫瑰

    下面是“只要1K 纯JS脚本送你一朵3D红色玫瑰”的完整攻略。 简介 这是一篇介绍如何使用纯JS脚本实现一个3D红色玫瑰特效的攻略。这个特效非常小巧,只有1K的脚本大小,而且在支持CSS3的浏览器中使用硬件加速,可以达到不错的性能表现。该特效适用于制作一些简单而独特的网页元素,如背景、按钮等等。 步骤 以下是实现该特效的具体步骤: 第一步:引用JS库 在网页…

    css 2023年6月10日
    00
  • ElementUI实现在下拉列表里面进行搜索功能详解

    下面我会详细讲解如何使用ElementUI来实现在下拉列表中进行搜索的功能,包含以下步骤: 安装ElementUI组件库 引入ElementUI Select组件 使用filterable属性启用搜索功能 自定义搜索函数 具体步骤如下: 1. 安装ElementUI组件库 首先需要安装ElementUI组件库,可以通过以下命令进行安装: npm instal…

    css 2023年6月10日
    00
  • 初学者必看:所有CDR术语和概念列表

    首先,“初学者必看:所有CDR术语和概念列表”是一篇用于介绍CDR(Call Detail Record)概念和术语的文章。下面将对该攻略进行详细的讲解。 文章标题 文章标题“初学者必看:所有CDR术语和概念列表”使用Markdown的一级标题,格式为: # 初学者必看:所有CDR术语和概念列表 文章目录 在文章的开头,作者添加了一个目录,方便读者查阅不同术…

    css 2023年6月9日
    00
  • React 中如何将CSS visibility 属性设置为 hidden

    当我们想要在 React 中将某个元素的 visibility CSS 属性设置为 hidden 时,我们可以使用如下两种方式: 方法一:使用行内样式 我们可以通过在组件中使用行内样式来设置 visibility 属性。在 React 中,我们可以通过 props 来向组件传递样式。在这种情况下,我们需要使用 JavaScript 对象来表示 CSS 样式。…

    css 2023年6月10日
    00
  • Vue使用Swiper的案例详解

    Vue使用Swiper的案例详解 介绍 Vue.js 是一个渐进式 JavaScript 框架,可以轻易地建立单页面应用程序(Single Page Application)。 Swiper 是一款轻量级的移动端(支持 PC 端)触摸滑动插件,用于实现轮播图、图片切换等效果。 在本文中,我们将讲解如何在 Vue 项目中使用 Swiper 插件来实现轮播图效果…

    css 2023年6月9日
    00
  • xmlplus组件设计系列之图标(ICON)(1)

    XMLPlus组件设计系列之图标(ICON)(1) 简介 本文介绍XMLPlus组件中图标(ICON)的设计和使用。 设计 XMLPlus中的图标(ICON)是一种可重用的组件,用于在网站中显示图标以增加用户对功能的辨识度和易用性。图标(ICON)组件的设计应该基于以下原则: 清晰明了:图标应该清晰、简洁,能够通过色彩、形状等方式反映所代表的功能。 可重用:…

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