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

【CSS】说说响应式布局

目录

一、是什么

二、怎么实现

1、媒体查询

2、百分比

3、vw/vh

4、小结

三、总结


一、是什么

        响应式设计简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。

·        响应式网站常见特点:

  • 同时适配PC + 平板 + 手机等

  • 标签导航在接近手持终端设备时改变为经典的抽屉式导航

  • 网站的布局会根据视口来调整模块的大小和位置

二、怎么实现

        响应式设计的基本原理是通过媒体查询检测不同的设备屏幕尺寸做处理。为了适应屏幕,多数的移动浏览器会把HTML网页缩放到设备屏幕的宽度。

        可以使用 meta 标签的 viewport 属性来设置。下面的代码告诉浏览器使用设备屏幕宽度作为内容的宽度,并且忽视初始的宽度设置。这段代码写在 <head>里面。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  • viewport:即视图窗口,表示网页的可是区域;

  • width=device-width: 是自适应手机屏幕的尺寸宽度;

  • inital-scale:是缩放的初始化,也就是页面第一次加载时的缩放比例;

  • maximum-scale:是缩放比例的最大值,范围从0.0~10.0;

  • user-scalable:是用户的可以缩放的操作,“yes”表示允许缩放,“no”表示禁止缩放。

实现响应式布局的方式有如下:

  • 媒体查询
  • 百分比
  • vw/vh
  • rem

1、媒体查询

  CSS3中的增加了更多的媒体查询,就像if条件表达式一样,我们可以设置不同类型的媒体条件,并根据对应的条件,给相应符合条件的媒体调用相对应的样式表使用@Media查询,可以针对不同的媒体类型定义不同的样式,语法如下:

@media mediatype and|not|only (media feature) { CSS-Code;}
@media screen and (max-width: 1920px) { ... }

(当视口宽度小于1920px样式发生......改变)

@media screen (min-width: 400px) and (max-width: 600px) {body {font-size: 40px;}
}

(当视口宽度在大于等于400px并且小于等于600px,字体大小变为40px)

通过媒体查询,可以通过给不同分辨率的设备编写不同的样式来实现响应式布局

2、百分比

        当浏览器的宽度或者高度发生变化时,可以通过百分比单位,可以使得浏览器中的组件的宽和高随着浏览器的变化而变化,从而实现响应式的效果。

        但是每个属性都使用百分比,会照成布局的复杂度,所以不建议使用百分比来实现响应式。

3、vw/vh

  vw表示相对于视图窗口的宽度,vh表示相对于视图窗口高度。 任意层级元素,在使用vw单位的情况下,1vw都等于视图宽度的百分之一。

        但是每个属性都使用vh/vw,会照成布局的复杂度,所以不建议使用vh/vw来实现响应式。

4、小结

响应式设计实现通常会从以下几方面思考:

  • 弹性盒子(包括图片、表格、视频)和媒体查询等技术
  • 使用百分比布局创建流式布局的弹性UI,同时使用媒体查询限制元素的尺寸和内容变更范围
  • 使用相对单位使得内容自适应调节
  • 选择断点,针对不同断点实现不同布局和内容展示

三、总结

优点:

  • 面对不同分辨率设备灵活性强

  • 能够快捷解决多设备显示适应问题

缺点:

  • 兼容各种设备工作量大,效率低下
  • 代码累赘,会出现隐藏无用的元素,加载时间加长
  • 其实这是一种折中性质的设计解决方案,多方面因素影响而达不到最佳效果
  • 一定程度上改变了网站原有的布局结构,会出现用户混淆的情况
http://www.lryc.cn/news/114909.html

相关文章:

  • 数据结构 | 利用二叉堆实现优先级队列
  • Javascript怎样阻止事件传播?
  • web-csrf
  • 数据结构—图的存储结构
  • Vue3 中 setup,ref 和 reactive 的理解
  • BL302嵌入式ARM控制器进行SQLite3数据库操作的实例演示
  • C++ 多线程:std::future
  • 断路器回路电阻试验
  • Python中的CALL_FUNCTION指令
  • 微服务——es数据聚合+RestClient实现聚合
  • 代码分析Java中的BIO与NIO
  • 网络安全(黑客)工作篇
  • zookeeper入门学习
  • VirtualEnv 20.24.0 发布
  • LabVIEW开发高压航空航天动力系统爬电距离的测试
  • 【论文阅读】基于深度学习的时序异常检测——Anomaly Transformer
  • Java并发总结
  • 视频汇聚平台EasyCVR视频广场侧边栏支持拖拽
  • MyCat分片规则——范围分片、取模分片、一致性hash、枚举分片
  • 设计模式行为型——备忘录模式
  • Parquet存储的数据模型以及文件格式
  • Go和Java实现访问者模式
  • 想要通过软件测试的面试,都需要学习哪些知识
  • MySQL的索引使用的数据结构,事务知识
  • 普及100Hz高刷+1ms响应 微星发布27寸显示器:仅售799元
  • Java课题笔记~6个重要注解参数含义
  • Windows Docker Desk环境时区问题导致的时间问题解决?
  • SpringBoot复习:(22)ConfigurationProperties和@PropertySource配合使用及JSR303校验
  • Spring IoC (控制反转)
  • 安卓下模拟渲染EGLImageKHR