.dropdown-item.active, .dropdown-item:active { color: #fff; text-decoration: none; background-color: #007bff; }
时间: 2024-04-03 11:32:37 浏览: 14
这段代码定义了两个 CSS 选择器,用于设置下拉菜单中的选项在被激活或处于活动状态时的样式。具体来说,当用户点击了下拉菜单中的某个选项时,该选项就会被激活或处于活动状态。此时,该选项的文本颜色会变为白色,文字下划线会消失,背景色会变为蓝色(#007bff)。这样的样式设置可以提高用户交互体验,让用户更加清晰地知道当前选中的选项是哪一个。
相关问题
用vue写一个下拉框
当然可以,以下是用 Vue.js 写的一个简单的下拉框组件:
```vue
<template>
<div class="dropdown">
<div class="dropdown-toggle" @click="showDropdown = !showDropdown">
{{ selectedOption }}
<span class="caret"></span>
</div>
<div class="dropdown-menu" v-show="showDropdown">
<div class="dropdown-item"
v-for="(option, index) in options"
:key="index"
@click="selectOption(option)">
{{ option }}
</div>
</div>
</div>
</template>
<script>
export default {
props: {
options: {
type: Array,
required: true
},
value: {
type: String
}
},
data() {
return {
showDropdown: false,
selectedOption: this.value || this.options[0]
};
},
methods: {
selectOption(option) {
this.selectedOption = option;
this.showDropdown = false;
this.$emit("input", option);
}
},
watch: {
value(newValue) {
this.selectedOption = newValue;
}
}
};
</script>
<style>
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-toggle {
display: flex;
align-items: center;
padding: 0.5rem;
background-color: #f8f9fa;
border: 1px solid #ced4da;
border-radius: 0.25rem;
cursor: pointer;
}
.dropdown-toggle .caret {
margin-left: auto;
border-top: 0.3rem solid;
border-right: 0.3rem solid transparent;
border-left: 0.3rem solid transparent;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
min-width: 10rem;
padding: 0.5rem 0;
margin: 0.125rem 0 0;
font-size: 1rem;
color: #212529;
text-align: left;
list-style: none;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ced4da;
border-radius: 0.25rem;
}
.dropdown-menu .dropdown-item {
display: block;
width: 100%;
padding: 0.25rem 1.5rem;
clear: both;
font-weight: 400;
color: #212529;
text-align: inherit;
white-space: nowrap;
background-color: transparent;
border: 0;
}
.dropdown-menu .dropdown-item:hover {
color: #fff;
background-color: #007bff;
}
.dropdown-menu .dropdown-item:focus,
.dropdown-menu .dropdown-item:hover {
color: #fff;
text-decoration: none;
background-color: #007bff;
}
.dropdown-menu .dropdown-item:active {
color: #fff;
background-color: #007bff;
}
.dropdown-menu .dropdown-item.disabled,
.dropdown-menu .dropdown-item:disabled {
color: #6c757d;
background-color: transparent;
}
.dropdown-menu .dropdown-item:not(:first-child) {
border-top: 1px solid #ced4da;
}
</style>
```
这个组件的工作原理是:
- `props` 中的 `options` 是一个数组,表示下拉框中的选项列表;
- `props` 中的 `value` 是一个字符串,表示当前选中的选项;
- `data` 中的 `showDropdown` 是一个布尔值,表示下拉框是否可见;
- `data` 中的 `selectedOption` 是一个字符串,表示当前选中的选项;
- `methods` 中的 `selectOption` 方法用于选中一个选项;
- `watch` 中的 `value` 方法用于在 `value` 改变时更新 `selectedOption`。
我们可以在父组件中使用这个组件并传递选项和当前选中的选项,例如:
```vue
<template>
<div>
<dropdown :options="options" v-model="selectedOption" />
<p>你选择的选项是:{{ selectedOption }}</p>
</div>
</template>
<script>
import Dropdown from './Dropdown.vue';
export default {
components: {
Dropdown
},
data() {
return {
options: ['选项 1', '选项 2', '选项 3'],
selectedOption: '选项 1'
};
}
};
</script>
```
在这里,我们使用 `Dropdown` 组件并传递了一个选项列表和当前选中的选项。我们还使用了 `v-model` 指令来双向绑定当前选中的选项。当用户选择一个选项时,`selectedOption` 的值会相应地更新。
制作以下响应式的网页框架 一、内容包括 1.页面分为页头、菜单导航栏(最好可下拉)、banner图、中间内容板块、页脚四大部分 2.要有JS特效,如定时切换和手动切换图片轮播。 3.页面清爽、美观、大方,
以下是一个基本的响应式网页框架,包括页头、菜单导航栏、banner图、中间内容板块和页脚等部分。同时,添加了JS特效来实现图片轮播和下拉菜单等功能。
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>响应式网页框架</title>
<style>
/* 全局样式 */
body {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
color: #333;
}
/* 页头样式 */
.header {
background-color: #f5f5f5;
padding: 20px;
text-align: center;
}
/* 导航栏样式 */
.navbar {
background-color: #333;
color: #fff;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 10px 20px;
position: sticky;
top: 0;
z-index: 999;
}
.navbar-brand {
font-size: 24px;
font-weight: bold;
text-transform: uppercase;
}
.navbar-menu {
display: flex;
flex-direction: row;
}
.navbar-menu li {
list-style: none;
margin: 0 10px;
position: relative;
}
.navbar-menu li:hover .dropdown-menu {
display: block;
}
.dropdown-menu {
display: none;
position: absolute;
top: 100%;
left: 0;
background-color: #333;
padding: 10px;
min-width: 100%;
z-index: 999;
}
.dropdown-menu a {
color: #fff;
text-decoration: none;
display: block;
padding: 5px;
}
/* Banner样式 */
.banner {
background-image: url("banner.jpg");
background-size: cover;
background-position: center;
height: 500px;
position: relative;
}
.banner-overlay {
background-color: rgba(0, 0, 0, 0.5);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
}
.banner-title {
font-size: 48px;
font-weight: bold;
color: #fff;
margin: 0 0 10px;
}
.banner-subtitle {
font-size: 24px;
color: #fff;
margin: 0 0 20px;
}
/* 内容板块样式 */
.content {
padding: 50px;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
align-items: flex-start;
}
.content-box {
background-color: #f5f5f5;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
padding: 20px;
margin-bottom: 20px;
flex-basis: calc(33.33% - 20px);
}
.content-box h2 {
font-size: 24px;
font-weight: bold;
color: #333;
margin: 0 0 10px;
}
.content-box p {
font-size: 16px;
line-height: 1.5;
color: #666;
margin: 0;
}
/* 页脚样式 */
.footer {
background-color: #333;
color: #fff;
padding: 20px;
text-align: center;
}
.footer p {
margin: 0;
}
/* 响应式样式 */
@media screen and (max-width: 768px) {
.navbar-menu {
display: none;
position: absolute;
top: 50px;
left: 0;
background-color: #333;
padding: 10px;
min-width: 100%;
z-index: 999;
}
.navbar-menu li {
margin: 0;
}
.navbar-menu li:hover .dropdown-menu {
display: none;
}
.navbar-menu li:hover .navbar-menu {
display: flex;
}
.navbar-menu li:hover .navbar-menu li {
display: block;
margin: 10px 0;
}
.content-box {
flex-basis: calc(50% - 20px);
}
}
</style>
</head>
<body>
<!-- 页头 -->
<div class="header">
<h1>响应式网页框架</h1>
</div>
<!-- 导航栏 -->
<nav class="navbar">
<a href="#" class="navbar-brand">Logo</a>
<ul class="navbar-menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a>
<ul class="dropdown-menu">
<li><a href="#">Company</a></li>
<li><a href="#">Team</a></li>
<li><a href="#">Contact</a></li>
</ul>
</li>
<li><a href="#">Services</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
<!-- Banner -->
<div class="banner">
<div class="banner-overlay">
<h2 class="banner-title">响应式网页框架</h2>
<p class="banner-subtitle">一个基本的响应式网页框架</p>
</div>
</div>
<!-- 内容板块 -->
<div class="content">
<div class="content-box">
<h2>内容板块1</h2>
<p>这是内容板块1的内容。这是内容板块1的内容。这是内容板块1的内容。</p>
</div>
<div class="content-box">
<h2>内容板块2</h2>
<p>这是内容板块2的内容。这是内容板块2的内容。这是内容板块2的内容。</p>
</div>
<div class="content-box">
<h2>内容板块3</h2>
<p>这是内容板块3的内容。这是内容板块3的内容。这是内容板块3的内容。</p>
</div>
<div class="content-box">
<h2>内容板块4</h2>
<p>这是内容板块4的内容。这是内容板块4的内容。这是内容板块4的内容。</p>
</div>
<div class="content-box">
<h2>内容板块5</h2>
<p>这是内容板块5的内容。这是内容板块5的内容。这是内容板块5的内容。</p>
</div>
<div class="content-box">
<h2>内容板块6</h2>
<p>这是内容板块6的内容。这是内容板块6的内容。这是内容板块6的内容。</p>
</div>
</div>
<!-- 页脚 -->
<div class="footer">
<p>版权所有 © 2021 响应式网页框架</p>
</div>
<!-- JS特效 -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
// 图片轮播
var slideIndex = 1;
showSlides(slideIndex);
function plusSlides(n) {
showSlides(slideIndex += n);
}
function currentSlide(n) {
showSlides(slideIndex = n);
}
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("banner");
var dots = document.getElementsByClassName("dot");
if (n > slides.length) {slideIndex = 1}
if (n < 1) {slideIndex = slides.length}
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
slides[slideIndex-1].style.display = "block";
dots[slideIndex-1].className += " active";
}
// 下拉菜单
$(".navbar-menu li").hover(function() {
$(this).find(".dropdown-menu").stop(true, true).fadeIn(200);
}, function() {
$(this).find(".dropdown-menu").stop(true, true).fadeOut(200);
});
</script>
</body>
</html>
```
希望这个响应式网页框架对您有所帮助。如有任何问题,请随时向我提问。