如何仅使用 CSS 创建响应式网站

news/2024/5/3 10:00:49/文章来源:https://www.cnblogs.com/amboke/p/16648357.html

如何仅使用 CSS 创建响应式网站

使用 vw 和 rem 构建响应式页面。

Photo by 用户体验商店 on 不飞溅

前言

从移动浏览器或应用程序访问的网站越来越多。对我来说,在空闲时间,我基本上是用手机访问网站。移动浏览器对用户来说很方便,但对开发人员来说却是痛苦的,因为屏幕大小不同。例如,iPhone 有 7 种不同的尺寸。为了获得更好的体验,不同的屏幕尺寸需要不同的显示效果。与 iPhone SE 相比,iPhone Pro 需要显示更大的 font-size 和 padding。

常见的方法是使用媒体查询来更改 html 的字体大小以反映屏幕尺寸的更小或更大。我们可以使用 雷姆 作为每个元素的长度单位。

例如,我们可以将 1 级标题设置为 2雷姆 , 如果 html 字体大小是 16像素 ,那么 h1 标签的字体大小将是 32像素 (1rem = 16px)。在大屏幕中,我们只需要通过媒体查询来改变基本字体大小。

 html {  字体大小:16px;  }  h1 {  字体大小:2rem;  }  
[ @媒体](https://twitter.com/media) 屏幕和(最小宽度:500px){  html {  字体大小:20px;  }  }[ @媒体](https://twitter.com/media) 屏幕和(最小宽度:600px){  html {  字体大小:24px;  }  }

当我们缩放屏幕时,标题字体大小也会改变:

通过使用媒体查询,我们必须指定规则来应用不同的字体大小,效果看起来不是很流畅。调整屏幕大小时如何平滑调整字体大小?

使用视口单元 vw

视口单位始终代表屏幕尺寸, 1大众 等于视口宽度的百分之一,这意味着如果我们使用 大众 ,它总是与视口的大小有关:

 1vw = document.documentElement.clientWidth / 100

我们可以通过设置 body 在 chrome devtools 上进行测试 字体大小:1vw ,实际值将与 document.documentElement.clientWidth / 100

通过使用 大众 允许我们使页面具有响应性,但有一个问题是我们无法缩放文本。上面的演示表明 1大众 在移动屏幕上会非常小,在 PC 桌面浏览器中会额外。

解决方案是使用 CSS 函数,比如 计算() , 夹钳()

 <h1>响应式字体大小(仅使用 vw)</h1>  <p class="calc">使用 calc() 的解决方案</p>  <p class="clamp">使用钳位()的解决方案</p> // CSS  h1 {  字体大小:10vw;  }  .calc {  字体大小:计算(10px + 5vw);  }  。夹钳 {  字体大小:钳位(20px,5vw,2rem);  }

我们直接设置元素 font-size 而不是设置 html font-size 只是为了测试。在实际项目中,建议设置 html font-size 以供我们使用 雷姆 对于元素框大小或其他长度。它的行为如下:

夹钳() 可能更有用,它支持三个参数,最小值、首选值和最大值。语法是:

 钳位(最小值、值、最大值) 被解析为 M ath.max(MIN, Math.min(VAL, MAX))

所以我们可以利用这个特性为移动浏览器和桌面浏览器创建响应式网站。

里面有demo Codepen.io ,您可以通过调整浏览器窗口大小来测试它。

结论

我们使用视口单元 大众 和 CSS 函数 夹钳() 通过设置页面基本字体大小来创建响应式网页,并且页面中的每个元素都使用 雷姆 作为长度单位。我在许多项目中都使用这种方式,希望这可以帮助你。

感谢您的阅读,我期待您的以下更多实用技能:

[

不要使用变换到中心元素

将我们不知道大小的元素居中的更好方法

levelup.gitconnected.com

](/dont-use-transform-to-center-element-b378587ad1db)

[

如何仅使用 CSS 实现滚动到顶部

使用粘性布局和标签滚动

levelup.gitconnected.com

](/how-to-implement-scroll-to-top-with-only-css-ae27cb9d4678)

[

如何在不使用 CSS 边框的情况下构建元素边框

4种实现边框效果的方法

levelup.gitconnected.com

](/how-to-construct-an-element-border-without-using-csss-border-4a5c9fc7c9e6)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/9666/52420200

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

概述:隐式神经表示(Implicit Neural Representations,INRs)

隐式神经表示&#xff08;Implicit Neural Representations&#xff0c;INRs&#xff09;1 简介1.1 传统的隐式表示1.1.1 代数表示1.1.2 函数表示1.1.3 水平集表示&#xff08;level set&#xff09;1.2 什么是隐式神经表示1.3 隐式神经表示的优缺点1.3.1 优点1.3.2 缺点2 应用…

GD32(7)程序烧录及运行

目录简介启动方式Boot00&#xff0c;Boot1xBoot01&#xff0c;Boot10Boot01&#xff0c;Boot11烧录方式ICPISPIAPIAP的作用IAP与ICP、ISP的运行差别IAP的Bootloader程序实现IAP的APP程序实现简介 微控制器在硬件中作为核心&#xff0c;通过执行保存在内部存储器中的程序&#x…

网站安全防护措施有哪些

想要我们的网站在网络中安全稳定运行&#xff0c;网站安全防护是不可或缺的环节&#xff0c;那么网站安全防护需要做哪些措施呢&#xff0c;这些措施能起到什么作用呢&#xff0c;接下来一起跟着小编一起来看看吧。 服务器安全狗和网站安全狗2022新版更新 更有效帮助用户防护网…

精品基于Uniapp+SSM实现的公园植物介绍APP

《[含文档PPT源码等]精品基于UniappSSM实现的公园植物介绍APP[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务…

设备通过国标GB28181/海康Ehome接入EasyCVR,视频无法打开的原因分析及解决方法

EasyCVR平台支持多类型设备、多协议方式接入&#xff0c;包括市场主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等&#xff0c;以及厂家私有协议&#xff0c;如海康SDK、大华SDK、海康Ehome等。平台可将接入的流媒体进行处理及分发&#xff0c;分发的视频格式包括RTSP、RTM…

Swift Practice # 172 Swift 取得网页资料并制作台湾乡镇气象连结JSON

Swift Practice # 172 Swift 取得网页资料并制作台湾乡镇气象连结JSON 上一篇解决了使用Google Admob套件所产生的Link问题,让广告可以顺利显示。 [ Swift Practice # 171 Google Admod 闪退之-ObjC Linker 与SPM 上一篇简单的练习改变SwiftUI Map的显示比例,达到所有显示资料…

python3 词频统计计数分析+可视化词云 jieba+wordcloud 数据分析

hi&#xff0c; 大家好&#xff0c;我是宋哈哈&#xff0c;今天分享一个利用 python 的 jieba 库 和 wordcloud 词云库 做一个字符串的词频分析和词云可视化 编程环境&#xff1a; python 版本&#xff1a;3.6.8 编辑器&#xff1a;pycharm 2020.1.3 专业版 系统环境&#xff1…

使用聚类(K-means)分析方法对骑手进行分类标签定义

什么是聚类分析 聚类分析的目标就是在相似的基础上收集数据来分类&#xff0c;属于无监督学习。就是通过行为数据&#xff0c;通过算法将相似的人群聚集在一起&#xff0c;形成不带标签的人群簇。再人为的对人群簇进行分析&#xff0c;寻找特征标签。 一、数据构建 根据骑手的…

电脑重装系统开机后运行慢怎么办

小编就给大家分享四个电脑运行慢的方法&#xff0c;可以选择适合自己的方法去使用&#xff0c;一般情况都是可以解决掉电脑开机后运行慢的问题&#xff0c;我们接着看看吧。 还有其它的电脑重装系统方法 工具/原料&#xff1a; 系统版本&#xff1a;windows7系统 品牌版本&a…

Leetcode题解——30. 包含min函数的栈(辅助栈思想)

题目地址&#xff1a;剑指 Offer 30. 包含min函数的栈 - 力扣&#xff08;LeetCode&#xff09; 目录 一.算法思想 二.代码实现 三.拓展思考 首先说结论&#xff0c;这道题虽然难度不大&#xff0c;但是算法思想很重要&#xff0c;是辅助栈应用的生动实例。 所以&#xff…

(10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】

&#xff08;1&#xff09;工业界推荐系统-小红书推荐场景及内部实践【业务指标、链路、ItemCF】 &#xff08;2&#xff09;工业界推荐系统-小红书推荐场景及内部实践【UserCF、离线特征处理】 &#xff08;3&#xff09;工业界推荐系统-小红书推荐场景及内部实践【矩阵补充、…

VSCode 配置 C++ 环境

开学了&#xff0c;后面更新速度会更慢&#xff0c;望周知。 接上回: https://blog.csdn.net/orangebench11/article/details/126111356 先说一下, 这个教程不是给完整json复制粘贴, 是要跟教程配置 (放心, 大部分配置都很简单)。 安装VSCode 官网: Visual Studio Code - C…

2021年研究生数模B题论文记录

2021年研究生数模B题论文记录1.常见数据处理方法&#xff1a;2.相关性系数选择3.聚类算法4.一种数据降维方式5.预测模型文章来源 2021年全国大学生研究生数学建模竞赛优秀论文集合&#xff0c;B题&#xff0c;文章编号&#xff1a;B21100130067 1.常见数据处理方法&#xff1a;…

Golang高性能日志库zap + lumberjack 日志切割组件详解

文章篇幅较长&#xff0c;可以先收藏防止迷路~ 目录zap日志库1. why zap?2. 简单使用3. 自定义logger例子4. Gin项目使用zap6. lumberjack 日志切割组件zap日志库 在许多Go语言项目中&#xff0c;我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中&a…

Java刷题面试系列习题(六)

文章目录前言Java题目练习⭕题目一&#xff1a; 统计一句话中重复单词的个数&#x1f31f;代码演示&#x1f4af;思路解析⭕题目二&#xff1a; map简单应用&#x1f31f;代码演示&#x1f4af;思路解析⭕题目三&#xff1a; 集合排序&#x1f31f;代码演示&#x1f4af;思路解…

分享查题公众号制作过程

分享查题公众号制作过程 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转&#xf…

不要再把数据可视化搞成表面工程,论数据可视化的正确逻辑

日前&#xff0c;我国网民规模达10.51亿的消息上了热搜&#xff0c;点进去看才发现是中国互联网络信息中心&#xff08;CNNIC&#xff09;发布了最新的《中国互联网络发展状况统计报告》&#xff0c;其中有很多值得思考的信息&#xff0c;也为未来发展指明了大的方向。就比如网…

Linux内核设计与实现 第一章 Linux内核简介

1.1Unix的历史 1969,贝尔实验室的程序员Dennis Ritchie 和Ken Thompsin等&#xff0c;编写Multics失败&#xff0c;不甘心没有交互式操作系统&#xff0c;设计了一个文件系统原型&#xff0c;这个原型最终演化成了Unix。 Unix系统设计简洁&#xff0c;发布时提供源代码&#x…

AviX Ergo 改善工作条件的视觉人体工程学

随着装配线的要求越来越复杂,人体工程学正成为关注的焦点。AviX Ergo 通过视频评估带来了一种全新的方法来改善工作场所的人体工程学。 AviX Ergo 将 AviX 方法对工作场所的深入分析与公认的 Borg CR-10 量表相结合,以确定工作场所的生理压力水平,同时评估心理压力。 1、BOR…

uniapp一键生成iOS通用链接

第一步&#xff1a;开启Associated Domains服务 登录苹果开发者中心 &#xff0c;在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID&#xff0c;确保开启Associated Domains服务 开启Associated Domains服务后需要重新生成profile文…