CSS 基础(六):自定义下拉菜单、动画

自定义组件

自定义下拉菜单的原理

先说个前置知识点,想想下面这个 CSS 是什么意思:

The CSS style you provided is a simple rule that changes the display property of an element with the class .dropdown-content when its parent (or ancestor) element with the class .dropdown is hovered over.

The CSS style you provided means that when an element with the class .dropdown is hovered over, any child element with the class .dropdown-content will be displayed.

当某个具有 .dropdown:hover 样式的父标签在鼠标悬停其上面时,该父标签下具有 .dropdown-content 样式的子标签的样式是 display: block;

Explanation:

  1. .dropdown:hover: This part of the selector targets elements with the class .dropdown when they are being hovered over by the mouse pointer. Hovering is when the mouse pointer is placed over an element without clicking it.
  2. .dropdown .dropdown-content: This part of the selector targets elements with the class .dropdown-content that are descendants of elements with the class .dropdown.
  3. display: block;: This rule changes the display property of the .dropdown-content element to block. By default, many dropdown content elements are hidden (e.g., display: none;) to prevent them from being displayed until needed. Setting display to block makes the element visible.

Combined Meaning:

When an element with the class .dropdown is hovered over, any descendant element with the class .dropdown-content will have its display property set to block. This typically means that the dropdown content, which is initially hidden, will become visible when the user hovers over the dropdown element.

下面开始实现自定义下拉列表,当鼠标移动到指定元素上时,会出现下拉菜单:

显示效果:

实例解析

HTML 部分:

我们可以使用任何的 HTML 元素来打开下拉菜单,如:<span>, 或 a <button> 元素。

使用容器元素 (如: <div>) 来创建下拉菜单的内容,并放在任何你想放的位置上。

使用 <div> 元素来包裹这些元素,并使用 CSS 来设置下拉内容的样式。

CSS 部分:

.dropdown 类使用 position:relative, 这将设置下拉菜单的内容放置在下拉按钮 (使用 position:absolute) 的右下角位置。

.dropdown-content 类中是实际的下拉菜单。默认是隐藏的,在鼠标移动到指定元素后会显示。 注意 min-width 的值设置为 160px。你可以随意修改它。 注意: 如果你想设置下拉内容与下拉按钮的宽度一致,可设置 width 为 100% ( overflow:auto 设置可以在小尺寸屏幕上滚动)。

我们使用 box-shadow 属性让下拉菜单看起来像一个”卡片”。

:hover 选择器用于在用户将鼠标移动到下拉按钮上时显示下拉菜单。

参:
https://www.runoob.com/css/css-dropdowns.html
https://www.runoob.com/try/try.php?filename=trycss_dropdown_button

CSS3 动画

CSS3 可以创建动画,它可以取代许多网页动画图像、Flash 动画和 JavaScript 实现的效果。

CSS3 @keyframes 规则

要创建 CSS3 动画,你需要了解 @keyframes 规则。

@keyframes 规则是创建动画。

@keyframes 规则内指定一个 CSS 样式和动画将逐步从目前的样式更改为新的样式

当在 @keyframes 创建动画,把它绑定到一个选择器,否则动画不会有任何效果。

指定至少这两个CSS3的动画属性绑定向一个选择器:

  • 规定动画的名称
  • 规定动画的时长

注意: 您必须定义动画的名称和动画的持续时间。如果省略的持续时间,动画将无法运行,因为默认值是0。

动画例子:

动画效果:

参:https://www.runoob.com/try/try.php?filename=trycss3_animation1

CSS3动画是什么?

动画是使元素从一种样式逐渐变化为另一种样式的效果。

您可以改变任意多的样式任意多的次数。

请用百分比来规定变化发生的时间,或用关键词 “from” 和 “to”,等同于 0% 和 100%。

0% 是动画的开始,100% 是动画的完成。

为了得到最佳的浏览器支持,您应该始终定义 0% 和 100% 选择器。

实例

当动画为 25% 及 50% 时改变背景色,然后当动画 100% 完成时再次改变:

实例

改变背景色和位置:

CSS3的动画属性

下面的表格列出了 @keyframes 规则和所有动画属性:

属性描述CSS
@keyframes规定动画。3
animation所有动画属性的简写属性。3
animation-name规定 @keyframes 动画的名称。3
animation-duration规定动画完成一个周期所花费的秒或毫秒。默认是 0。3
animation-timing-function规定动画的速度曲线。默认是 “ease”。3
animation-fill-mode规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。3
animation-delay规定动画何时开始。默认是 0。3
animation-iteration-count规定动画被播放的次数。默认是 1。3
animation-direction规定动画是否在下一周期逆向地播放。默认是 “normal”。3
animation-play-state规定动画是否正在运行或暂停。默认是 “running”。3
参:https://www.runoob.com/css3/css3-animations.html

动画示例

动画效果:

码先生
Author: 码先生

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注