16个实用的CSS样式之导航栏

17,858 阅读4分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

👨‍🎓作者简介:一位喜欢写作,计科专业大三菜鸟

🏡个人主页:starry陆离

🕒首发日期:2022年9月20日星期二

🌌上期文章:16个实用的CSS样式之视觉差滚动

📚订阅专栏:『16个实用的CSS样式』

1.简介

对于初学前端的小白来说css样式的设计很考验基本功和创意想法,而在项目开发中我们不可能将大部分的时间用于CSS代码的编写,能复用的就复用。因此我特意总结了16个在项目开发中常用的CSS样式,因为自己也是初学者,所以以小白的视角来记录和学习这16款样式的设计与编写。今天我为大家带来的是页面导航栏

来看一下最终效果吧!!!css_08_01

2.布局设计

首先我们设计好布局,一般网页顶部的导航栏我们都是通过列表标签来创建一组序列,实际开发中点击这些导航栏是能跳转到不同的界面的,所以我们包裹着超链接标签。代码如下:

 <body>
     <header>
       <nav>
         <ul>
           <li><a href="#">首页</a></li>
           <li><a href="#">产品介绍</a></li>
           <li><a href="#">服务介绍</a></li>
           <li><a href="#">关于我们</a></li>
           <li><a href="#">联系我们</a></li>
           <div class="slider"></div>
         </ul>
       </nav>
     </header>
   </body>

我们预览一下此时网页的渲染效果。

image-20220920214543582

3.样式美化

3.1排列方式

首先我们要调整一下标签的排列方式,预期的效果导航栏是水平排列的,这里我们肯定都能想到用盒子模型,通过盒子模型能过很方便的设置子元素的排列方向。

 nav {
   display: flex;
   justify-content: center;
   align-items: center;
   height: 100vh;
 }
 ​
 ul {
   position: relative;
   display: flex;
 }
 ​
 ul li {
   list-style: none;
   width: 120px;
   line-height: 40px;
   text-align: center;
 }

此时可以预览到页面效果是这样的:(这里我为了显示的效果,给body标签设置了一个暗系的背景色)

image-20220920222748073

可以看到这里的文字颜色是紫色的,而且有下划线,我们可以通过:

text-decoration 这个 CSS 属性是用于设置文本的修饰线外观的(下划线、上划线、贯穿线/删除线 或 闪烁)它是 text-decoration-line, text-decoration-color, text-decoration-style, 和新出现的 text-decoration-thickness 属性的缩写。

  • text-decoration-line:文本修饰的位置,如下划线underline,删除线line-through
  • text-decoration-color:文本修饰的颜色
  • text-decoration-style:文本修饰的样式,如波浪线wavy实线solid虚线dashed
  • text-decoration-thickness:文本修饰线的粗细

通过text-decoration不设置文字的样式即可去除下划线了。

 ul li a {
   color: white;
   text-decoration: none;
 }

image-20220920230610725

3.2hover高亮

hover属性也是我们常用的,通过用户鼠标移入到元素上出发样式。

除了设置好.slider选择器的样式,我们还通过li:nth-child(n)取到第n个li标签

:nth-child(an+b) 这个 CSS 伪类]首先找到所有当前元素的兄弟元素,然后按照位置先后顺序从 1 开始排序。

 ​
 .slider {
   width: 100px;
   height: 40px;
   background-color: #5352ed;
   border-radius: 4px;
   position: absolute;
   left: 10px;
   bottom: 0;
   z-index: -1;
   transition: all ease 0.4s;
   animation: 2s ease-in-out waves infinite;
 }
 ​
 li:nth-child(1):hover ~ .slider {
   left: 10px;
 }
 ​
 li:nth-child(2):hover ~ .slider {
   left: 128px;
 }
 ​
 li:nth-child(3):hover ~ .slider {
   left: 248px;
 }
 ​
 li:nth-child(4):hover ~ .slider {
   left: 368px;
 }
 ​
 li:nth-child(5):hover ~ .slider {
   left: 488px;
 }

css_08_02

3.3动画帧

最后我们为了美化动画效果,我们通过clip-path裁剪slider制作两组动画帧,从而实现液体流动的效果,没什么技术性,只是比较繁琐,理解动画帧的制作即可。关于动画帧的制作在之前的文字中有学习,就不赘述:16个实用的CSS样式之文本填充

 @keyframes waves {
   from {
     clip-path: polygon(
       0% 17%,
       9% 10%,
       18% 4%,
       30% 0%,
       43% 1%,
       49% 4%,
       57% 7%,
       66% 10%,
       78% 11%,
       89% 11%,
       96% 9%,
       100% 7%,
       100% 100%,
       0% 100%
     );
   }
   50% {
     clip-path: polygon(
       0% 4%,
       6% 9%,
       13% 13%,
       23% 15%,
       31% 16%,
       42% 15%,
       49% 13%,
       61% 10%,
       71% 5%,
       81% 3%,
       90% 2%,
       100% 5%,
       100% 100%,
       0% 100%
     );
   }
   to {
     clip-path: polygon(
       0% 17%,
       9% 10%,
       18% 4%,
       30% 0%,
       43% 1%,
       49% 4%,
       57% 7%,
       66% 10%,
       78% 11%,
       89% 11%,
       96% 9%,
       100% 7%,
       100% 100%,
       0% 100%
     );
   }
 }

4.结语

到此为止一个简单的页面导航栏就做好啦,当然在常见的网站中不会这样去配色哈,还是要简约大气为主。但是学习阶段好看就完事了。如果觉得不错的话记得点赞支持哈。