仿小米首页左侧导航栏(纯css)

  • 两大部分
    • 左侧灰色部分
      • 先上代码
      • 快捷键小技巧
      • CSS
    • 右侧部分
      • CSS
      • 页面元素隐藏
  • 总结

两大部分

首先我们先看看小米首页左侧导航栏的样子


首先是左侧灰色部分,不难分析出我们应该使用的是列表元素进行编写。而右侧很明显也应该使用到的列表元素进行设计。不多说直接开始

左侧灰色部分

因为使用纯css写,代码稍显复杂,其实所有的li标签可以通过vue框架v-for进行遍历渲染到页面上,因为是基础学习 就使用最基础的方法进行。

先上代码

<!-- 导航栏区域 -->
<div class="nav">
<!-- 左侧导航区域 -->
<ul class="nav-list"><li class="nav-item">手机 电话卡<!-- 右侧导航栏 --><div class="nav-detail"><ul><li><img src="#" alt=""><span>小米10</span></li><li><img scr="#" alt=""><span>小米10</span></li><li><img scr="#" alt=""><span>小米10</span></li><li><img scr="#" alt=""><span>小米10</span></li></ul></div></li><li class="nav-item">电视 盒子</li><li class="nav-item">笔记本 显示器 平板</li><li class="nav-item">家电 插线板</li><li class="nav-item">出行 穿戴</li><li class="nav-item">智能 路由器</li><li class="nav-item">电源 配件</li><li class="nav-item">健康 儿童</li><li class="nav-item">耳机 音箱</li><li class="nav-item">生活 箱包</li>
</ul>
</div>

快捷键小技巧

1.当我们想快速生成许多li标签的时候我们可以ul>li*n(n为整数)再摁下Tab键即可生成一个ul标签和n个li标签。笔者使用的是HBuilder X进行编写,其他的编辑器也应该适用。例如VS等,区别可能是写完之后使用回车生成还是使用Tab键生成的。
2.快速多行进行相同操作。当我们有许多li标签需要添加相同的css时,在标签进行调用时需要一个一个打,即便是ctrl+c v也稍显麻烦,我们可以使用shift+alt键配合鼠标左键下拉即可完成多行同操作,添加相同样式便方便了许多
3.快速创建div和他的class或id,只需要div.classname摁下Tab键即可创建出

div.classname
div#idname
<div class="classname"></div>
<dic id="idname"></dic>

CSS

1.当我们添加上文字的时候会发现html默认了一些margin值和padding值。在今后的前端开发中需要养成使用*通配符选择器来先消除默认的样式,或是调成需要的样子

*{margin: 0;padding: 0;/* 去掉默认小圆点 */list-style-type: none;
}

将默认的margin和padding去掉之后我们通过观察发现导航栏需要用到的ul+li有两大部分,所以我们直接可以再*中将小圆点进行去除,就不需要写两遍了。
2.ul和li是使用一个div进行包起来的,nav样式仿照小米官网的导航栏样式

.nav {width: 234px;height: 460px;background-color: rgba(105,101,101, 0.6);/* 设置上下的内间距 */padding:10px 0;/* 解决padding造成的盒子撑开问题 */box-sizing: border-box;/* 给右侧导航栏区域做一个定位拦截 */position: relative;
}

这里指的注意的是盒子撑开问题,因为使用了div盒模型,往往使用设置padding值进行调整li位置的时候一定要记得此时的width和height已经默默改变了。那么解决这个问题的方法通过调整对应的width和height例如设置了padding-left:50px;那么相对应的width就变为原来数值-50px;height同理,这个做法非常的不方便。所以我们使用box-sizing属性来解决盒子撑开的问题。==box-sizing:border-box;==即可。
3.接下来看ul和li的样式

/* 左侧导航 */
.nav .nav-list {width: 234px;height: 460px;margin-top: 5px;
}
/* 每一栏 */
.nav .nav-list .nav-item {width: 234px;height: 42px;/* 文本垂直居中 和height一样高的时候文本就实现了垂直居中*/line-height: 42px;font-size: 14px;color: #FFFFFF;padding-left: 30px;box-sizing: border-box;
}

这里指的注意的是如何让文本在li中实现垂直居中,用到的方法是line-height和height保持一样的像素大小即可。这里height是42px;于是设置line-height:42px;就可以达到效果

右侧部分

右侧的部分依旧使用的是div包着ul+li这里需要注意的是这一部分我们应该写在左侧部分li标签里。因为他们可以理解为从属关系,如果没有左侧部分,就不会产生右侧部分。接下来看css

CSS

/* 右侧导航栏 */
.nav .nav-detail {width: 800px;height: 460px;background-color: #f99;/* absolute默认相对于浏览器可视化窗口区域定位 */position: absolute;left: 234px;top: 0;padding: 20px 30px;box-sizing: border-box;/* 默认情况隐藏 */opacity: 0;
}
.nav .nav-detail ul li img {width: 40px;height: 40px;float: left;margin-right: 20px;
}
.nav .nav-detail ul li {/* 从左往右排列 */float:left;width: 180px;
}
.nav .nav-list .nav-item:hover .nav-detail{opacity: 1;
}
/* 鼠标移到导航栏每一项时 背景颜色变橘色 */
.nav .nav-list .nav-item:hover {background-color: #ff6700;}

(1)这里需要注意的知识点是position定位属性。在前面的520笔记中大体介绍过position:absolute绝对定位。产生top,left等四个属性。通过这四个属性调节位置。这里不再赘述。我们同样使用opcity:0来实现整个div的隐藏。
(2)值得注意的还有img和li的样式,设置了float属性,即是浮动属性,从左往右排列当一行装满的时候将自动切换到下一行。
(3)要实现当用户把鼠标放在左侧部分li上的时候而使得右侧部分出现使用到的是:hover伪类。
解读代码就是先找到.nav-item即是找到左侧部分的li,然后:hover表示当用户鼠标放上去的时候,然后后面写上.nav-detail即是需要调整.nav-detail的样式,将opcity透明度调整为1,则可以实现当鼠标放上去时出现右边部分。

页面元素隐藏

页面元素隐藏的方法:
1.display:none;
2. visibility: hidden;visibility 属性规定元素是否可见。默认可见可继承
3. opacity:0;
4. position:absolute;left:-10000px;

总结

这是一个很简单的练习,但是里面的小知识点也不少,应该将这些基础都归纳总结在今后的学习工作中少走弯路。

使用CSS模仿小米首页导航栏相关推荐

  1. 仿安居客首页导航栏及二级下拉菜单Html+Css+JavaScript

    这次仿写的是安居客的首页导航栏,要求实现二级下拉菜单 首先,这是原网页的效果 接下来是html部分 <div class="box1"><ul id=" ...

  2. 直播app开发搭建,纯css/html实现侧边导航栏

    直播app开发搭建,纯css/html实现侧边导航栏 css代码: *{margin: 0px;padding: 0px;}#box{position: absolute;height: 300px; ...

  3. 使用html,css实现简单的导航栏

    标题:使用html,css实现简单的导航栏 一.实现过程 首先通过ul,li实现一个无序列表,添加背景得到如图所示的样式[文档流] 让li浮动,使得垂直排列–>水平排列,[注意需要开启bfc,让 ...

  4. 如何用最简洁的css代码写一个导航栏

    如何用最简洁的css代码写一个导航栏 首先我们在里面通过标签添加一个logo,然后通过标签简单的设置几个导航栏中的内容. 注:标签主要是用于设置超链接. <div><img src= ...

  5. 精致纯CSS打造绿色漂亮导航栏

    代码简介: 极精致的纯CSS实现的菜单,兼容性非常好,条例WEB标准,能用性好,用到有修饰图片,请根据代码地址自己下载. 代码内容: <!DOCTYPE html PUBLIC "-/ ...

  6. php 3d animation,CSS_纯CSS实现菜单、导航栏的3D翻转动画效果,我曾经向大家展示过闪光的logo - phpStudy...

    纯CSS实现菜单.导航栏的3D翻转动画效果 我曾经向大家展示过闪光的logo,燃烧的火狐狸,多重嵌套动画等例子,今天,我们将要制作一个简单但非常酷的3D翻转菜单.大家可以先看看实际效果,下面有效果截图 ...

  7. html+css实现页面顶部导航栏

    最终效果如下: 接下来,我将从html和css两大部分,逐步为您讲解制作过程 目录 Html 实现布局 创建父栏目 创建子栏目 插入外部样式表,为接下来的css编辑做准备 Css 实现样式 排布文本, ...

  8. 玩转【斗鱼直播APP】系列之首页导航栏设置

    首页导航栏设置 重点掌握内容 导航栏添加Items 给系统的类扩充方法 扩充便利构造函数 效果展示 在iOS开发中,导航栏的设置是必不可少的一部分. 通常导航栏中会放很多的UIBarButtonIte ...

  9. 小码哥-玩转【斗鱼直播APP】系列之首页导航栏设置

    首页导航栏设置 重点掌握内容 导航栏添加Items 给系统的类扩充方法 扩充便利构造函数 效果展示 在iOS开发中,导航栏的设置是必不可少的一部分. 通常导航栏中会放很多的UIBarButtonIte ...

最新文章

  1. 支付宝应用的架构到底有多牛?
  2. 程序员,不要急于学习编程语言,先学会如何解决问题
  3. 用于 Outlook 2003 的删除重复邮件的插件(加载项)
  4. 消费者行为模型_市场调查消费者行为研究模型
  5. academic division at cssa
  6. python pdf库_3个Python PDF库,提取信息、转换格式、分割剪裁有它就够了!
  7. matlab 棍,双足机器人行走棍图怎么用MATLAB画出来
  8. VScode中编写运行C/html文件
  9. STM8L USART串口使用
  10. 局域网考勤python_Python pyftpdlib 实现局域网文件互传
  11. 服务器IP为什么会被封,以及解决办法
  12. kali启动ssh服务后,依然无法连接的问题。
  13. 短信验证码mysql_短信验证码
  14. R语言基础编程技巧汇编 - 13
  15. 数据结构——左倾红黑树
  16. 安卓桌面软件哪个好_Mac桌面壁纸软件哪个好?7款好用的mac壁纸软件推荐,从此告别壁纸荒...
  17. 单片机出现正在检测目标单片机问题解决办法
  18. 百度智能手环方案开源(含源码,原理图,APP,通信协议等)...
  19. html地图添加marker,腾讯地图添加多marker标注样式
  20. java.lang.OutOfMemoryError: GC overhead limit exceeded解决办法

热门文章

  1. css3八卦,CSS3 旋转的八卦图
  2. BingMap(必应地图)学习一
  3. 找到两个字符串重合的部分
  4. 【烟台大学】寒暑假登录YTU——手机版+电脑版
  5. 万物皆可集成系列:低代码释放用友U8+深度价值(3)— 数据融合应用
  6. 第一性原理计算在材料分析中的应用及未来发展趋势
  7. 计算机课的动画片,国产动画片大全
  8. QT写入文件与读取文件内容
  9. 有谁转行学java成功了的吗_转行学习java靠谱吗?
  10. 如何利用大数据改进企业广告的投放策略大数据运营商获客难的问题