分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

能用HTML/CSS解决的问题,就不要用JS

发布时间:2023-09-06 01:53责任编辑:顾先生关键词:CSSHTML

原因:简单。

简单就意味着更快的开发速度,更小的维护成本,同时往往具有更好的体验。

一,导航高亮

效果图:

代码:

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>home</title> ???<link rel="stylesheet" href="./style.css"></head><body class="home"> ???<ul> ???????<li class="home"><a href="home.html">home</a></li> ???????<li class="buy"><a href="buy.html">buy</a></li> ???????<li class="sell"><a href="sell.html">sell</a></li> ???</ul></body></html>
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>buy</title> ???<link rel="stylesheet" href="./style.css"></head><body class="buy"> ???<ul> ???????<li class="home"><a href="home.html">home</a></li> ???????<li class="buy"><a href="buy.html">buy</a></li> ???????<li class="sell"><a href="sell.html">sell</a></li> ???</ul></body></html>
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>sell</title> ???<link rel="stylesheet" href="./style.css"></head><body class="sell"> ???<ul> ???????<li class="home"><a href="home.html">home</a></li> ???????<li class="buy"><a href="buy.html">buy</a></li> ???????<li class="sell"><a href="sell.html">sell</a></li> ???</ul></body></html>
ul { ???list-style: none;}ul li { ???float: left; ???margin-right: 30px;}a { ???color: #000; ???text-decoration: none;}/*正常态时,每个导航的默认样式*/ul li a { ???opacity: 0.5;}/*hover高亮实现*/ul li a:hover { ???opacity: 1; ???border-bottom: 1px solid red;}/*选中当前页面时,导航不透明度为1,另外加上下边框*/body.home ul li.home a,body.buy ul li.buy a,body.sell ul li.sell a { ???opacity: 1; ???border-bottom: 1px solid red;}

二,鼠标悬浮时显示

实现方法:把隐藏的对象如子菜单,信息框作为hover目标的子元素或者相邻元素

方法一,使用相邻元素

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>index</title> ???<style> ???/*menu正常状态下是隐藏的*/ ???.menu { ???????display: none; ???} ???/*导航hover时,显示menu*/ ???.user:hover+.menu { ???????display: list-item; ???} ???/*menu hover的时候,继续显示*/ ???.menu:hover { ???????display: list-item; ???} ???????/*如果menu和user之间有空隙,可以使用伪元素填充这个空隙,是menu hover的时候,依旧显示*/ ???.menu:before { ???????content: ‘‘; ???????position: absolute; ???????left: 0; ???????top: -10px; ???????width: 100%; ???????height: 10px; ???} ???</style></head><body> ???<li class="user">用户</li> ???<li class="menu"> ???????<ul> ???????????<li>账户设置</li> ???????????<li>登出</li> ???????</ul> ???</li></body></html>

方法二,使用子元素

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Document</title> ???<style> ???.container .menu { ???????display: none; ???} ???????.container:hover .menu { ???????display: list-item; ???} ???</style></head><body> ???<ul class="container"> ???????<li class="user">用户</li> ???????<li class="menu"> ???????????<ul> ???????????????<li>账户设置</li> ???????????????<li>登出</li> ???????????</ul> ???????</li> ???</ul></body></html>

三,自定义radio/checkbox的样式

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>index</title> ???<style> ???/*原生的选择框隐藏*/ ???input[type=checkbox] { ???????display: none; ???} ???????/*未选中的checkbox的样式*/ ???.checkbox { ???????display: inline-block; ???????width: 20px; ???????height: 20px; ???????border-radius: 50%; ???????border: 1px solid #000; ???} ???????/*利用:checked伪类实现自定义选中状态样式*/ ???input[type=checkbox]:checked+.checkbox { ???????border: 1px solid red; ???????background-color: yellow; ???} ???</style></head><body> ???<label for="check"> ???????<input type="checkbox" id="check"> ???????<span class="checkbox"></span> ???</label></body></html>

能用HTML/CSS解决的问题,就不要用JS

原文地址:https://www.cnblogs.com/iceflorence/p/9015664.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved