二十七、响应式布局练习- 美图导航栏1

news2024/9/22 10:02:38

目录:

  1. 准备工作
  2. 界面结构开发
  3. 样式设计 - style.less

一、准备工作

开发响应式设计的网页需要注意以下几点:
1.移动端优先 - 先写完移动端的界面,再写网页。 因为现在都是手机用的比较多;
2.渐进增强 - 当移动端写完后,再慢慢增强pc端的功能;

  • 要开发的手机大小的界面:

二、界面结构开发

分析:手机宽度下的网页元素, 导航栏3个元素,左边菜单,中间标题, 右边用户。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 网站如果需要再pc端用,reset需要重置下,不是的话,可以不用reset -->
    <link rel="stylesheet" href="../css/reset.css">
    <link rel="stylesheet" href="../fa/css/all.min.css">
    <link rel="stylesheet" href="./meitu/style.css">
</head>
<body>

    <!-- 外部容器 -->
    <div class="top-bar">
        <!-- 1.左侧菜单 -->
        <div class="left-menu">
            <!-- 创建菜单图标 3条线的图标,待会通过css来添加动画效果,从3条线变成一个叉 -->
            <ul class="menu-icon">
                <li></li>
                <li></li>
                <li></li>
            </ul>

             <!-- 创建弹出层的菜单 -->
             <ul class="nav">
                <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>
                <li>
                    <a href="#"><i class="fas fa-search"></i></a>
                    <span>搜索 Meitu.com</span>
                </li>
             </ul>

        </div>
        <!-- 2.logo -->
        <!-- 他可以点所以是用a标签,点击后回到主页所以是 href="/" -->
        <h1 class="logo">
            <a href="/">美图手机</a>
        </h1>

    

        <!-- 3.用户信息 -->
        <div class="user-info">
            <!-- 就是一个超链接,所以用# -->
            <a href="#">
                <i class="fas fa-user"></i>
            </a>
        </div>

    </div>

</body>
</html>

用户信息用的是雪碧图,2x(2倍图),比他真实的图标大小,大了一倍,所以待会需要缩小下。

三、样式设计 - style.less

因为我们的菜单列表是后面点击左侧按钮在展示,所以在写样式前,先把这个菜单nav注释藏起来,不影响我们外面大局的布局。


        <div class="left-menu">
            <ul class="menu-icon">
                <li></li>
                <li></li>
                <li></li>
            </ul>

             <!-- 创建弹出层的菜单 -->
             <!-- <ul class="nav">
                <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>
                <li>
                    <a href="#"><i class="fas fa-search"></i></a>
                    <span>搜索 Meitu.com</span>
                </li>
             </ul> -->

        </div>

1、导航条的外部容器


.top-bar{
    height: 48px;
    background-color: #000;

    //3. 导航条的左右两个icon离边框都有间距
    padding: 0 14px;

    //4. 导航条上3个元素是横向排列,且垂直方向居中
    display: flex;
    align-items: center;
    
    //5. 3个元素的距离空白是分配到他们之间
    justify-content: space-between;
}

2.设置左侧导航图标

.left-menu{
    .menu-icon{
        // 因为li里面没有东西,所以设置了背景颜色后看不到,需要在设置点宽高才行
        width: 18px;
        height: 48px;
        position: relative;
        // 制作3条杠,然后通过定位,来控制他们的位置
        li{
            background-color: #bfa;
            width: 18px;
            height: 1px;
            background-color: #fff;
            position: absolute;
        }
        // 3条杠分别不同的位置
        li:nth-child(1){
            top:18px;
        }
        li:nth-child(2){
            top:24px;
        }
        li:nth-child(3){
            top:30px;
        }
    }
}
  // 把li里面的背景颜色去掉,就完美了
        li{
            width: 18px;
            height: 1px;
            background-color: #fff;
            position: absolute;
        }

3. 把图标三转换成X

a. 现在要做图标转换成x的动画,中间的线要消失,隐藏第二条线

  • 可以用visibility: hidden; 或者 opacity: 0;
  • 因为转换过程有个淡入淡出的过渡效果,所以旋转opacity: 0;
  li:nth-child(2){
            top:24px;
            // 隐藏
            opacity: 0;   
        }

b. 接下来两条线交叉,涉及到变形,上面线往下旋转,下面的线往上旋转

 li:nth-child(1){
            top:18px;
            //向下旋转
            transform:rotateZ(45deg);
        }
  li:nth-child(3){
            top:30px;
            //向上旋转
            transform:rotateZ(-45deg);

        }

c.优化x

问题:因为旋转的点在中心位置,所以导致转出来是 > 样式,不是 x 样式 。
优化:修改变形的原点 让他变成x。

  li{
            width: 18px;
            height: 1px;
            background-color: #fff;
            position: absolute;

            // 修改变形的原点 让他变成x
            transform-origin: left center;
        }

d. 优化x: 当变成x后,可能交叉点不是很中心,就只有自己试旋转角度,这里实处为40deg

        li:nth-child(1){
            top:18px;
            //当变成x后,可能交叉点不是很中心,就只有自己试旋转角度
            transform:rotateZ(40deg);
        }

  		li:nth-child(3){
            top:30px;
            transform:rotateZ(-40deg);
        }

完整代码

//设置左侧导航图标
.left-menu{
 
    .menu-icon{
        width: 18px;
        height: 48px;
        position: relative;
        li{
            width: 18px;
            height: 1px;
            background-color: #fff;
            position: absolute;
            transform-origin: left center;
        }
        li:nth-child(1){
            top:18px;
            transform:rotateZ(40deg);
        }
        li:nth-child(2){
            top:24px;
            opacity: 0;    
        }
        li:nth-child(3){
            top:30px;
            transform:rotateZ(-40deg);
        }
    }
}

e.制作从三 变成 x 的动画效果

无js参与,所以我们用hover 模拟下,当鼠标移动到三,他立马变成 X

        li{
            width: 18px;
            height: 1px;
            background-color: #fff;
            position: absolute;
            transform-origin: left center;

            // 从三到X,加上过渡效果动画
            transition: 0.5s;
        }
     //这里的3条杠,原始的位置
        li:nth-child(1){
            top:18px;
        }
        li:nth-child(2){
            top:24px;
            
        }
        li:nth-child(3){
            top:30px;

        }


        // 因为这里没有让js参与交互,所以先用hover来代替做下效果,当鼠标移入menu-icon, 从三 变成  X
        &:hover{

            li:nth-child(1){
                transform:rotateZ(40deg);
            }
            li:nth-child(2){
                opacity: 0; 
            }
            li:nth-child(3){
                transform:rotateZ(-40deg);
            }

        }

4. 把图标三转换成X,这部分css最终完整代码

//二、设置左侧导航图标
.left-menu{
    //图标
    .menu-icon{
        width: 18px;
        height: 48px;
        position: relative;
        li{
            width: 18px;
            height: 1px;
            background-color: #fff;
            position: absolute;

            transform-origin: left center;
            transition: 0.5s;
        }
        li:nth-child(1){
            top:18px;
        }
        li:nth-child(2){
            top:24px;  
        }
        li:nth-child(3){
            top:30px;
        }

        &:hover{

            li:nth-child(1){
                transform:rotateZ(40deg);
            }
            li:nth-child(2){
                opacity: 0; 
            }
            li:nth-child(3){
                transform:rotateZ(-40deg);

            }

        }


    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/802030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Cloud Gateway 新一代网关】—— 每天一点小知识

&#x1f4a7; S p r i n g C l o u d G a t e w a y 新一代网关 \color{#FF1493}{Spring Cloud Gateway 新一代网关} SpringCloudGateway新一代网关&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&a…

js学习 记录(二)

js学习 记录&#xff08;二&#xff09; 匿名函数 函数表达式

节省近2400亿,中国芯片拿下7纳米工艺,外媒:挡不住中国芯了

从去年至今中国进口的芯片减少了1400亿颗&#xff0c;芯片进口金额减少了300多亿美元&#xff08;约合近2400亿元人民币&#xff09;&#xff0c;尤为让人高兴的是近期频频传出中国或已搞定接近7纳米的N1工艺&#xff0c;并将为一家中国芯片企业生产芯片。 一、中国芯片夯实成熟…

InnoDB 的隔离级别是如何实现的

点击上方↑“追梦 Java”关注&#xff0c;一起追梦&#xff01; MySQL 数据库 InnoDB 存储引擎的隔离级别是通过锁和 MVCC 的机制实现的。 1 了解 MySQL 中锁的机制 锁是用于避免不同事务对共享资源的并发访问的产生读一致性的问题的机制。 1、表锁和行锁 InnoDB 存储引擎支持行…

如何与 Zappos 建立 EDI 连接?

Zappos 是一家享誉全球的知名在线鞋类和服饰零售商&#xff0c;经营范围涵盖各类时尚品牌的鞋类、服饰及配饰等&#xff0c;使命是为广大消费者提供方便、愉悦、优质的购物体验&#xff0c;让每一位顾客都能找到心仪的产品。多年来&#xff0c;Zappos 卖场凭借卓越的服务与产品…

通用VS垂直,讯飞星火与网易子曰不同的“大模型解法”

配图来自Canva可画 随着大模型商业化应用的提速&#xff0c;全世界各国都开始孵化和孕育各自的行业大模型。在此背景下&#xff0c;国内各个细分行业的垂直大模型&#xff0c;日益受到产业界的关注和重视。 相比通用大模型&#xff0c;垂直大模型具有门槛较低、数据质量较好且…

安装虚拟机

分区 根分区5个G 同理 交换分区 最后一个分区&#xff0c;默认所有

串口环形缓冲区

文章目录 一、串口环形缓冲区概念二、STC12例程&#xff08;1&#xff09;环形串口缓冲区结构体&#xff08;2&#xff09;串口环形缓冲区存和取数据&#xff08;3&#xff09;完整工程demo 一、串口环形缓冲区概念 串口环形缓冲区应用于嵌入式、物联网开发中处理接收串口数据…

windows C++多线程同步<3>-互斥量

windows C多线程同步&#xff1c;3&#xff1e;-互斥量 概念&#xff0c;如下图&#xff1a; 另外就是互斥对象谁拥有&#xff0c;谁释放 那么一个线程允许多次获取互斥对象吗&#xff1f; 答案是允许&#xff0c;但是申请多次就要释放多次&#xff0c;否则其他线程获取不到互…

在线进销存-亿发移动进销存管理系统,助力批发零售企业线上线下同步经营

随着移动互联网的蓬勃发展&#xff0c;商品进销存管理日益变得复杂而关键&#xff0c;数字化转型已经成为批发零售企业增强竞争力的有效工具。移动进销存管理系统为批发零售企业提供一体化 解决方案&#xff0c;实现线上线下同步经营&#xff0c;帮助企业实现对商品的有效管理&…

TDengine Cloud 加入 AWS 合作伙伴网络,助力出海企业数字化转型

近日&#xff0c;全托管的时序数据云平台 TDengine Cloud 正式入驻 AWS Marketplace&#xff08;海外区&#xff09;&#xff0c;用户可通过 AWS Marketplace 轻松实现 TDengine Cloud 的订阅与部署&#xff0c;以最低的成本搭建最高效的数据处理架构。此外&#xff0c;早在 20…

python新手如何系统学习,走过这4个阶段成为高手

目录 python初级阶段学习 python中级阶段学习 python高级阶段学习 python进阶阶段学习 Python是一种简洁而强大的编程语言&#xff0c;广泛应用于软件开发、数据科学、人工智能等领域。很多新手如何系统学习python&#xff0c;今天我们从4个阶段来学习&#xff0c;就能成为高…

SpringBoot实现的旅游酒店管理系统源码附带视频运行教程

基于SpringBootMybatissThymeleaf框架系统主要有以下功能&#xff1a;分为前后台 前台用来展示数据&#xff0c;预定酒店、预定旅游、预定车票、购买保险等 后台&#xff1a;旅游路线管理、景点管理、酒店管理、车票管理、保险管理、攻略管理、留言管理、订单管理等后台管理员 …

关注这些问题,助你找到理想工作

导语&#xff1a;在寻找理想工作的过程中&#xff0c;有一些关键问题需要我们特别关注。了解并回答这些问题将有助于我们更好地定位自己&#xff0c;并找到符合自身需求和目标的职位。本文将介绍一些在找工作时需要关注的重要问题。 个人定位&#xff1a;首先&#xff0c;我们…

失去SSL证书,会对网站安全造成什么影响?

作为网络世界中的“身份证”&#xff0c;SSL证书可以在网络世界中证明你是一个真实可信的企业或个人网站&#xff0c;而不是一个钓鱼网站。且在网站的服务器上部署SSL证书后&#xff0c;可以使网站与访问者之间通过SSL协议建立安全的加密连接&#xff0c;确保在Web服务器和浏览…

H5编辑二维码,如何将图文、视频、文件、链接全都展示在一个页面?

在二维彩虹可以制作各种类型的二维码。今天我们要介绍的是二维彩虹的【H5编辑二维码】&#xff0c;包括基本功能、应用场景、制作步骤&#xff0c;以及其优势特点。现在就来随我们一次看看吧&#xff01; 一&#xff0c;认识H5编辑二维码 二维彩虹的【H5编辑】是一款功能非常…

【数据分享】1999—2021年地级市劳动力就业及工资情况(Shp/Excel格式)

在之前的文章中&#xff0c;我们分享过基于2000-2022年《中国城市统计年鉴》整理的1999-2021年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、地方一般公共预算收支状…

【Linux命令200例】cut强大的文本处理工具

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入…

关于Spring的bean的相关注解以及其简单使用方法

一、前置工作 第一步&#xff1a;创建一个maven项目 第二步&#xff1a;在resource中创建一个名字叫做spring-config.xml的文件&#xff0c;并把以下代码复制粘贴 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.sprin…

java+springboot+mysql员工宿舍管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的员工宿舍管理系统&#xff0c;系统包含超级管理员、管理员、员工角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;楼栋管理&#xff1b;宿舍管理&#xff1b;员工管理&#xff08;分配…