当前位置: 首页 > news >正文

移动进阶之高效开发

响应式布局

媒体查询的语法

/* 4.媒体特性 *//* width / max-width / min-width *//* -webkit-device-pixel-ratio / -webkit-max-device-pixel-ratio / -webkit-min-pixel-ratio *//* orientation: landscape / portrait *//* @media screen and (min-width: 320px) {body {background-color: red;}} *//* @media screen and (width: 320px) {body {background-color: red;}} *//* dpr <= 2 且屏幕水平方向 */@media (-webkit-max-device-pixel-ratio: 2) and (orientation: landscape) {body {background-color: red;}}

获取像素比 

// 获取 dprconsole.log(window.devicePixelRatio);

媒体查询(断点)不能实时显示但是性能好 宽高等比例缩放 

按钮点击显示/隐藏

<!-- 导航 --><nav id="nav" class="nav-layout"><ul class="nav-list"><li><a href="./index.html" class="nav-link">首页</a></li><li><a href="javascript:;" class="nav-link">免费课程</a></li><li><a href="javascript:;" class="nav-link">实战课程&amp;金职位</a></li><li><a href="javascript:;" class="nav-link">专栏/手记/猿问</a></li><li><a href="javascript:;" class="nav-link">慕课教程</a></li></ul></nav>
<script>// 点击切换按钮,展开或收起导航菜单{const $toggleBtn = document.getElementById('header-toggle');const $nav = document.getElementById('nav');const navExtendedClassName = 'nav-layout-extended';const toggleBtnExtendedClassName = 'header-toggle-active';$toggleBtn.addEventListener('click',function () {// 判断有就移除样式 没有就添加样式this.classList.toggle(toggleBtnExtendedClassName);$nav.classList.toggle(navExtendedClassName);},false);}</script>
/* nav */
.nav-list {background-color: #fff;
}
.nav-link {display: block;height: 40px;line-height: 40px;padding: 0 20px;color: #363636;font-size: 14px;font-weight: bold;
}
.nav-link:hover {color: #1428a0;
}.nav-layout {overflow: hidden;position: absolute;top: 48px;left: 0;width: 100%;height: 0;/*因为高度为0 不显示设置溢出隐藏*//* background-color: #fff; */transition: height 0.5s;
}
.nav-layout-extended {height: 200px;
}

移动端媒体查询策略从小到大

/* 576px 768px 992px 1200px */
.course-item {width: 100%;
}
@media (min-width: 576px) {.course-item {width: 50%;}
}
@media (min-width: 768px) {.course-item {width: 33.333333%;}.header-toggle {display: none;}.nav-layout {/* 改为默认样式即可 不需要绝对定位 */position: static;height: auto;}.nav-list {display: flex;/* 从右往左排列 */justify-content: flex-end;}
}
@media (min-width: 992px) {.course-item {width: 25%;}
}
@media (min-width: 1200px) {.course-item {width: 16.666667%;}
}

Grid网格布局

Grid容器的属性

grid-template-rows 定义每一行的行高(可以给网格线起名字):[r1] 150px [r2] 150px [r3] 150px [r4] 150px

grid-template-columns 定义每一列的列宽(可以给网格线起名字):[c1] 150px [c2] 150px [c3] 150px [c4] 150px

上面2个属性取值可以是:百分比 fr份数(片段) auto(先于fr计算,获取必要的最小空间) repeat(4,25%) minmax(150px,300px)

grid-auto-flow: row/column 先填满第一行再填满第二行

grid-auto-rows 定义浏览器自动创建的多余空格的行高

grid-auto-columns 定义浏览器自动创建的多余空格的列宽

gap/row-gap/column-grap 行/列间距

grid-template-areas 定义区域(可以给每个区域的起始网格线命名 区域名-start 终止网格线命名 区域名-end)

align-items 垂直对齐 justify-items 水平对齐  place-items 前两者的合并

属性值可以是 start对齐单元格的起始边缘 end对齐单元格的结束边缘  (项目不一定总是铺满单元格)

align-content 设置整个内容区域的垂直位置(上中下)start end center

justify-content 设置整个内容区域的水平位置(左中右)start end center

属性值space-around 每个项目的两侧间隔相等 space-between 项目与项目间隔相等 space-evenly 前2者结合体

Grid项目的属性

grid-column-start/end 从第几个网格线开始,到第几个网格线结束 number|name|span number

grid-row-start/end 从第几个网格线开始,到第几个网格线结束 number|name|span number

grid-area 指定项目放在哪个区域/位置  区域名|左上角到右下角

align-self/justify-self/place-self针对单个项目

圣杯布局

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>圣杯布局</title><style>* {padding: 0;margin: 0;}body {/* display: flex;flex-direction: column; */display: grid;grid-template-rows: 80px 1fr 80px;/* grid-template-columns: 100%; */grid-template-columns: 200px auto 200px;grid-template-areas:'header header header''nav main sidebar''footer footer footer';height: 100vh;font-size: 24px;}.header-layout,.footer-layout {height: 80px;}.header-layout {background-color: red;grid-area: header;}.footer-layout {background-color: yellow;grid-area: footer;}.body-layout {/* flex-grow: 1;display: flex; */display: grid;grid-template-columns: 200px auto 200px;grid-template-rows: 100%;grid-template-areas: 'nav main sidebar';}.main-layout {/* flex-grow: 1; */background-color: gray;grid-area: main;}.nav-layout {/* width: 200px; */background-color: green;/* grid-column-start: 1;grid-column-end: 2;grid-row-start: 1;grid-row-end: 2; *//* order: -1; */grid-area: nav;}.aside-layout {/* width: 200px; */background-color: lightblue;grid-area: sidebar;}/* 垂直水平居中 *//* .flex-center {display: flex;justify-content: center;align-items: center;} */.grid-center {display: grid;justify-items: center;align-items: center;}</style></head><body><header class="header-layout grid-center">头部</header><!-- <div class="body-layout"> --><main class="main-layout grid-center">主体部分</main><nav class="nav-layout grid-center">导航</nav><aside class="aside-layout grid-center">侧栏</aside><!-- </div> --><footer class="footer-layout grid-center">底部</footer></body>
</html>

相关文章:

移动进阶之高效开发

响应式布局 媒体查询的语法 /* 4.媒体特性 *//* width / max-width / min-width *//* -webkit-device-pixel-ratio / -webkit-max-device-pixel-ratio / -webkit-min-pixel-ratio *//* orientation: landscape / portrait *//* media screen and (min-width: 320px) {body {b…...

用户手册:遥测服务之推送至 TDengine

创建TelemetryService Yaml 文件 apiVersion: shifu.edgenesis.io/v1alpha1 kind: TelemetryService metadata:name: push-endpoint-1namespace: devices spec:telemetrySeriveEndpoint: http://telemetryservice.shifu-service.svc.cluster.localserviceSettings:SQLSetting:…...

软件测试的主要工作内容是什么

平时说起程序员印象中大都是做Java、做前端、做后端&#xff0c;用着非常晦涩难懂的语言。在电脑前哐哐哐&#xff0c;没一会满屏代码显现出来。然而程序员并不全是印象中这样&#xff0c;还有一部分&#xff1a;他们不常写代码&#xff0c;主要去检查代码&#xff0c;是不是出…...

【云原生kubernetes】k8s中job与cronjob使用详解

一、前言 job&#xff0c;顾名思义就是任务&#xff0c;job的概念在很多框架中都有&#xff0c;而且实际业务场景中也使用非常广泛&#xff0c;比如大家熟悉的hadoop&#xff0c;客户端可以向集群提交一个job&#xff0c;然后集群根据一定的调度策略来处理这个job&#xff1b; …...

js-cookie的使用

实际上&#xff0c;cookie本身并不是用来做服务器存储的&#xff0c;关于jscookie存储的理解&#xff0c;可以参考我记录的js的数据存储专栏。 Cookie 是一些数据, 存储于客户端电脑上的文本文件中&#xff0c;其中记录了用户的用户名、密码、浏览的网页、停留的时间等等信息。…...

c++11 关键字 override 使用

写在最前。。。 请支持原创~~ 1. 功能 用在类中成员函数声明的地方&#xff0c;用以标记一个virtual function 是重写另一个 virtual function&#xff1b; 2. 语法 只声明时&#xff0c;override 紧跟参数的右括号&#xff0c;如果是纯虚函数&#xff0c;override 会出现在…...

从16K跳槽到20K,最后算下来年薪却还降了,我笑了····

跳槽时薪资涨了 4000&#xff0c;但年薪总包算下来反而变少了&#xff0c;这是怎么回事&#xff1f; 上周&#xff0c;我星球里一个同学就遇到了这么一个问题&#xff0c;薪资涨了、总包降了&#xff0c;而且谈薪时把自己坑了。 作为一个案例&#xff0c;我觉得对很多人可能会…...

线性表 链表表示

初识链表 用一组物理位置任意的存储单元来存放线性表的数据元素。这组存储单元既可以是连续的&#xff0c;也可以是不连续的&#xff0c;甚至是零散分布在内存中的任意位置上的。链表中元素的逻辑次序和物理次序不一定相同。 在存储自己内容的同时也存储下一个元素的地址。存…...

面试题JavaScript篇(二)

目录 一、内存泄露 1、是什么 2、导致的原因 二、垃圾回收机制的策略 三、浅拷贝和深拷贝 1、浅拷贝 .slice() ...展开运算符 Object.assign(目标对象, 被复制的对象) ...展开运算符 2、深拷贝 structuredClone() 浏览器提供 JSON.parse(JSON.stringify(obj)) …...

项目管理工具dhtmlxGantt甘特图入门教程(十五):从MS项目导入/导出(下)

这篇文章给大家讲解dhtmlxGantt请求大文件导入的大小限制。 dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表&#xff0c;可满足应用程序的所有需求&#xff0c;是完善的甘特图图表库 DhtmlxGantt正版试用下载&#xff08;qun 764148812&#xff09;https:…...

2023 年 6 大智能合约语言

如果你想成为一名 Web3 开发人员&#xff0c;你需要知道如何编写智能合约&#xff0c;智能合约是所有 Web3 应用程序的支柱。 简而言之&#xff0c;智能合约是在区块链网络上部署和执行的计算机程序&#xff0c;提供确定性保证&#xff0c;使多方能够达成一致的、防篡改的结果…...

家用洗地机哪款最好用?全球洗地机十大品牌

近年来&#xff0c;智能家用电器洗地机已经融入到我们生活中了&#xff0c;成为最受欢迎的清洁工具了&#xff0c;家用洗地机吸拖洗一体&#xff0c;不用先扫后拖那么麻烦&#xff0c;只需轻轻一推&#xff0c;就能把扫地、拖地、擦地的活全干了&#xff0c;操作简单&#xff0…...

【2223sW2】LOG1

写在前面 好好学习&#xff0c;走出宿舍&#xff0c;走向毕设&#xff01; 一些心路历程记录&#xff0c;很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧&#xff0c;还是不要给自己的查重挖坑罢了 23.2.27 文件批量重命名 为了给学姐先整出来一批训练数据&…...

Spring Cloud配置application.yml与bootstrap.yml区别及多profile配置 | Spring Cloud 6

一、前言 Spring Cloud 构建于 Spring Boot 之上&#xff0c;在 Spring Boot 中有两种上下文&#xff0c;一种是 bootstrap&#xff0c;另外一种是 application。 1.1 两者区别 bootstrap.yml/bootstrap.properties 和 application.yml/application.yml 都可以用来配置参数。…...

springboot通过aop实现全局日志(是否自定义注解都可以)

内容参考自以下两个链接1、springboot中使用AOP切面完成全局日志_aop全局日志_邹飞鸣的博客-CSDN博客使用AOP记录日志_aop日志_trusause的博客-CSDN博客第一个链接思路很清晰,讲的也很详细,第二个链接讲了自定义注解为了便于自己理解做了以下整理目录 1.aspectj基本概念 2.添加…...

k8s面试题-进阶

1、简述etcd及其特点etcd是CoreOS团队发起的开源项目&#xff0c;是一个管理配置信息和服务发现&#xff08;service discovery&#xff09;的项目&#xff0c;它的目标是构建一个高可用的分布式键值&#xff08;key-value&#xff09;数据库&#xff0c;基于Go语言实现。特点&…...

预览版Edge申请微软new Bing失败解决方案

文章目录1.首先需要配置科学上网2.下载预览版Edge浏览器卡它bug&#xff01;卡它bug&#xff01;卡它bug&#xff01;没有申请上ChatGPT的朋友们&#xff0c;试试new Bing吧&#xff0c;更新更强大&#xff0c;关于申请方式&#xff0c;网上已经有很多帖子了&#xff0c;其中一…...

Spring中Bean生命周期及循环依赖

spring中所说的bean对象 与 我们自己new的对象(原始对象)是不同的&#xff1b;bean对象是指spring框架创建管理的我们的对象生命周期即&#xff1a;何时生&#xff0c;何时死1.实例化 Instantiation&#xff1a;spring通过反射机制以及工厂创建出来的原始对象&#xff1b;2.属性…...

【3.1】MySQL锁、动态规划、Redis缓存,过期删除与淘汰策略

5.4 MySQL死锁了&#xff0c;怎么办&#xff1f; RR隔离级别下&#xff0c;会存在幻读的问题&#xff0c;InnoDB为了解决RR隔离级别下的幻读问题&#xff0c;就引出了next-key 锁&#xff0c;是记录锁和间隙锁的组合。 Record Lock&#xff0c;记录锁&#xff0c;锁的是记录本身…...

Python+Yolov5跌倒检测 摔倒检测 人物目标行为 人体特征识别

PythonYolov5跌倒检测 摔倒检测 人物目标行为 人体特征识别如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01;前言这篇博客针对<<PythonYolov5跌倒摔倒人体特征识别>>编写代码&#xff0c;代码整洁&…...

工程师十年实战:从线缆地狱到桌面净土的理线系统指南

1. 从“线缆地狱”到“桌面净土”&#xff1a;一位工程师的十年理线实战录我的工作台&#xff0c;曾经是线缆的“百慕大三角”。USB线、耳机线、电源线、各种测试探头线……它们像藤蔓一样缠绕、垂落、堆积&#xff0c;最终在桌面上形成一个五彩斑斓、却令人绝望的“线缆地狱”…...

别再复制粘贴了!手把手教你为51单片机LCD12864制作自定义中文字库(Keil C51环境)

从零构建51单片机LCD12864自定义中文字库的完整实战指南 在嵌入式显示领域&#xff0c;标准字库往往无法满足个性化需求。当我们需要在LCD12864屏幕上显示特殊符号、品牌LOGO或艺术字体时&#xff0c;自定义字库技术就成为关键突破点。本文将彻底解析从字模提取到ROM优化的全流…...

OpenClaw:重新定义 AI 智能体,从对话到执行的全能 “龙虾

在 AI 技术飞速迭代的今天&#xff0c;大语言模型已能流畅对话、生成内容&#xff0c;但多数仍停留在 “只说不做” 的层面。OpenClaw&#xff08;外号 “龙虾”&#xff09;的出现&#xff0c;打破了这一僵局 —— 它是一款由奥地利工程师 Peter Steinberger 主导开发&#xf…...

WarcraftHelper:让经典魔兽在现代电脑上重获新生

WarcraftHelper&#xff1a;让经典魔兽在现代电脑上重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还记得那些在网吧通宵对战《魔兽争…...

构建AI智能体技能超市:标准化工作流与多平台适配实践

1. 项目概述&#xff1a;一个面向AI智能体的“技能超市”如果你和我一样&#xff0c;每天都在和Codex、Claude、Cursor这些AI助手打交道&#xff0c;那你肯定也遇到过这样的场景&#xff1a;想让AI帮你生成一份规范的Git提交信息、自动更新文档索引&#xff0c;或者为一个新项目…...

蓝桥杯EDA国赛备赛

一.电路设计部分&#xff08;1&#xff09;13届国赛要求&#xff1a;数码管驱动电路设计区域内&#xff0c;使用给定的元器件&#xff08;锁存器-U6、电容等&#xff09;和网络标识补充完成数码管驱动电路&#xff0c;实现单片机对数码管的显示控制。参考答案&#xff1a;1. 10…...

OpenManus-RL:基于强化学习优化大语言模型智能体决策的完整框架

1. 项目概述与核心价值如果你正在关注大语言模型智能体领域&#xff0c;尤其是如何让模型从“会聊天”进化到“会做事”&#xff0c;那么OpenManus-RL这个项目绝对值得你投入时间研究。它不是一个简单的工具库&#xff0c;而是一个由UIUC-Ulab和MetaGPT团队联合发起的、以直播形…...

【人生底稿 23】新疆出差记・上篇:初入边疆,三个半小时的漫长飞行

2024 年的 6 月&#xff0c;刚在赣州、河北、湖南的项目里连轴转完&#xff0c;手里的需求设计还没完全收尾&#xff0c;一通临时电话&#xff0c;打破了我短暂的节奏 —— 任务突然下达&#xff1a;陪客户前往新疆乌鲁木齐的甲方现场。这不是我第一次出差&#xff0c;却是第一…...

记一次ubuntu 22.04安装旧版 MongoDB 4.2

22.04版本比较新&#xff0c;由于mongodb 2.4太老了&#xff0c;安装会遇到问题。特此记录1. 下载mongodb包wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.2.24.tgz2. 解压到当前目录sudo tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.2.24.tgz3.…...

ClawSuite:模块化网络安全工具集在渗透测试中的实战应用

1. 项目概述&#xff1a;ClawSuite&#xff0c;一个被低估的网络安全工具集如果你在网络安全领域摸爬滚打了一段时间&#xff0c;尤其是在渗透测试或者红队评估的圈子里&#xff0c;你大概率听说过或者用过像 Metasploit、Nmap、Burp Suite 这些耳熟能详的“瑞士军刀”。但今天…...