(0)写在前面
  讲述知乎上看到的一篇文章中的一个案例,让我脑洞大开,佩服至极,特意第二天找到原文赞赏了
5元,原文地址https://zhuanlan.zhihu.com/p/27258076,案例用了很多css3的属性。
(1)效果演示

(2)知识点及效果

<div class="trunc-list-wrapper" id="mylist"><ul class="trunc-list"><li><a href="#">Home</a></li>...<li aria-hidden="true" class="control  control--open"><a href="#mylist"><span>more</span></a></li><li aria-hidden="true" class="control  control--close"><a href=""><span>less</span></a></li></ul></div>
.trunc-list-wrapper {height: 2.25em;overflow: hidden;padding-right: 3.5em;}
.trunc-list {display: flex;flex-wrap: wrap;position: relative;}
.trunc-list li {flex: 1 0 auto;
}
.control {position: absolute;top: 0;right: -3.5em;width: 3.5em;height: calc((2.25em - 100%) * -1000);max-height: 2.25em;overflow: hidden;}
.control--close {display: none;}

上述为简易代码

display: flex;使.trunc-list内部元素成为flex项目

flex-wrap: wrap; 宽度不够时内部元素将换行,所以浏览器窗口缩放到一定宽度时,.trunc-list的高度发生

变化。
看不见缩放的元素是因为.trunc-list-wrapper的 height: 2.25em;overflow: hidden;导致
元素被隐藏。
trunc-list高度发生变化使得 height: calc((2.25em - 100%) * -1000);产生作用,可以看见more了, 
max-height: 2.25em;限制了最大高度。

点击more,因为
#myList是一个有效描点,下面的css生效

.trunc-list-wrapper:target .control--open {display: none;}.trunc-list-wrapper:target .control--close {display: block;}

同时下面的css生效

.trunc-list-wrapper:target {height: auto;}

隐藏的元素可以看见了

点击less时,因为是无效的锚点,相对于对上述效果的清除。


4.完整的代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>响应式的另一种思考</title><style>/* Basic common settings: */* {box-sizing: border-box;}html {line-height: 1.25;font-family: 'Lato', sans-serif;}.trunc-list-wrapper {height: 2.25em;overflow: hidden;padding-right: 3.5em;}.trunc-list {list-style: none;display: flex;flex-wrap: wrap;margin: 0;padding: 0;position: relative;}.trunc-list li {margin: 0;padding: 0;flex: 1 0 auto;}.trunc-list a {display: block;padding: 0.5em;text-align: center;white-space: nowrap;color: #fff;background:red;}.trunc-list a:hover,.trunc-list a:active,.trunc-list a:focus {background: red; }.control {position: absolute;top: 0;right: -3.5em;width: 3.5em;height: calc((2.25em - 100%) * -1000);max-height: 2.25em;overflow: hidden;}.control a {text-decoration: none;}.control span {font-size: 0.75em;font-style: italic;}.control--close {display: none;}.trunc-list-wrapper:target {height: auto;}.trunc-list-wrapper:target .control--open {display: none;}.trunc-list-wrapper:target .control--close {display: block;}</style>
</head>
<body><div class="trunc-list-wrapper" id="mylist"><ul class="trunc-list"><li><a href="#">Home</a></li><li><a href="#">Blog</a></li><li><a href="#">About Us</a></li><li><a href="#">Contact Us</a></li><li><a href="#">Help</a></li><li><a href="#">Login</a></li><li><a href="#">Sign In</a></li><li aria-hidden="true" class="control  control--open"><a href="#mylist"><span>more</span></a></li><li aria-hidden="true" class="control  control--close"><a href=""><span>less</span></a></li></ul></div><p>改变视口宽度大小来观察效果</p>
</body>
</html>

View Code

不用媒体查询做web响应式设计-遁地龙卷风相关推荐

  1. css3媒体查询实现网站响应式布局

    响应式建筑设计.响应式家具设计.响应式办公设计,这些词可能是已有的专业名词,也可能是我自己想出来的一些名词. 因为在生活中,我们常常会见到很多让人惊叹的设计,为什么同一套东西经过不同的方式变化之后会给 ...

  2. 响应式设计 视口 viewport 媒体查询

    响应式网页设计能让手机.平板电脑等均能获得完美的浏览体验,能够兼顾多屏幕.多场景的灵活设计,这与一次编写,到处运行有异曲同工的作用. 移动端设备的使用率虽然越来越高,但是计算机端用户也还有不少,基于这 ...

  3. 媒体查询 响应式设计

    一.媒体查询 <1>作用 使用 @media 查询,你可以针对不同的媒体类型定义不同的样式. @media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@m ...

  4. 8、什么是响应式设计?响应式设计的基本原理是什么?如何做?

    简介 我这么理解:响应式布局就是一个网站能够兼容多个设备,可以根据屏幕的大小自动调整页面的展示方式以及布局,我们不用为每一个设备做一个特定的版本.响应式网站的特点: 同时适配PC+平板+手机等 网站的 ...

  5. 《响应式Web设计性能优化》一1.1 响应式设计存在的问题

    本节书摘来异步社区<响应式Web设计性能优化>一书中的第2章,第2.1节,作者: [美]Tom Barker 译者: 余绍亮 , 丁一 , 叶磊 责编: 赵轩,更多章节内容可以访问云栖社区 ...

  6. web设计经验一 提升移动设备响应式设计的8个建议

    今天看到一些关于web设计的一些建议和设计经验,拿出来分享分享. 第一篇: 提升移动设备响应式设计的8个建议 一.直观性和易用性 在使用移动设备时,对于杂乱.复杂或者不直观的设计造成的混乱不佳的用户体 ...

  7. flex如何做响应式设计_响应式设计-您做错了!

    flex如何做响应式设计 Responsive design is not just about the web that automatically adjusts to different scr ...

  8. web响应式图片设计实现

    随着移动开发热潮的兴起,已经有越来越多的公司将移动端的开发列为核心,其中不论是webapp还是手机页面都是如此,在开发的过程中就涉及到了一个web响应式图片的问题,这里我们就来探讨一下响应式图片的实现 ...

  9. 14.什么是响应式设计?响应式设计的基本原理是什么?如何做?

    一.是什么 响应式网站设计(Responsive Web design)是一种网络页面设计布局,页面的设计与开发应当根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)进行相应的响应和调整 描述 ...

  10. 什么是响应式设计?响应式设计的基本原理是什么?如何做

    是什么 响应式网站设计(Responsive Web design)是一种网络页面设计布局,页面的设计与开发应当根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)进行相应的响应和调整 描述响应 ...

最新文章

  1. C# 对ListT取交集、连集及差集
  2. 10只机器狗拉卡车!井然有序,毫不费力 | 极客头条
  3. 【每日一算法】实现strStr()
  4. cpc无法获取系统office信息_智能云信息发布系统解锁信息获取新方式
  5. mysql老是下载了用不了_mysql - 下载与安装
  6. java去掉rn,React Native删除第三方开源组件的依赖包
  7. Selenium WebDriver问题--Internet Explorer保护模式设置问题
  8. PPT怎么在剪映_剪映怎么剪辑音乐?添加、分割、导入音乐,图文详解!
  9. Mime类型与文件后缀对照表及探测文件MIME的方法
  10. sql 字符串比较大小_SQL简单查询第二关
  11. python文件输出中文_【python】中文的输出,打印,文件编码问题解决方法
  12. 华大单片机HC32L136J8TA读取DS18B20温度(源码+时钟配置)
  13. C# HttpWebRequest post 数据与上传图片到server
  14. python 片段_python片段程序
  15. kvm迁移镜像启动报错(the CPU is incompatible with host CPU: Host CPU does not provide required features: fma)
  16. python locals_Python locals()
  17. 简易c语言编程软件,c语言开发工具下载
  18. 计算机优化英语课堂教学,多媒体课件优化英语课堂的反思性研究
  19. 苹果Mac更新系统版本失败如何解决?
  20. 爆炒猪肚的做法 爆炒猪肚怎样炒才脆

热门文章

  1. 图解Java设计模式
  2. 高等代数第3版下 [丘维声 著] 2015年版_高等代数笔记整理(一)
  3. Java自学视频整理
  4. Java基础-刘意经典版DAY1
  5. 329例精选matlab算法原理及源码详解——老生谈算法
  6. 关于VMware无法输入许可证密钥的方法
  7. 自定义TxT文档下载
  8. 新华三:竞奔不息,永立潮头
  9. 计算机操作系统--文件管理
  10. 单片机仿真软件Proteus8.0的安装及使用