在前端开发的日常工作中,CSS布局用到很多。有时候设计师考虑不够充分,没有针对不同设备尺寸,做布局显示上的优化,但作为前端开发,必须要考虑这些,需要对自己开发的页面负责。正好我在工作中遇到了一个CSS布局的小问题。本文将介绍这个问题的来源,以及我的解决思路。
在我公司某个项目中,存在一个弹性布局的问题。有一个首页有多个统计展示内容,这些内容以块的方式展示。我在查看这个页面的时候,发现页面块在小尺寸下存在一些不美观的情况。
比方说下面这个区域内容,原本正常显示是这样的:
但当我把窗口宽度缩小后,出现了 icon 图标掉下来的情况,时间和icon挤压在了一起,看着很不美观。
为了解决这个问题,我研究了一下,找到了比较好的解决方案。
我的思路其实很简单,就是当容器盒子宽度不够的时候,隐藏icon图标,只显示必要的文字和数字。这样对小尺寸的屏幕或者窗口来说,会比较友好。下面我将介绍两个解决方案。
可以设置当前窗口,小于一个固定尺寸宽度的时候,比方说 1200px,则隐藏子元素。
/* 媒体查询:当父盒子宽度小于300px时,子元素的icon不显示 */
@media (max-width: 1200px) {
.parent-box .child-element {
display: none;
}
}
这种方法比较常规,但监测屏幕范围过大,没有针对单个 DOM 元素检测精确,部分情况下可能不适用。于是就有了方案二。
这个是 2020 年2月11 日发布的 API,比较新,对现代浏览器支持较为友好,可以看看 caniuse 上的支持情况。
还是针对这个案例,具体的用法示例如下:
// 监测 DOM 元素尺寸 变化
this.resizeObserver = new ResizeObserver(entries => {
console.log('监听DOM元素尺寸发生了变化', entries)
// 尺寸大于 235px 则显示 icon
this.showIcon = entries[0].contentRect.width >= 235
})
// 把需要监测的 DOM 元素添加进去
this.resizeObserver.observe(document.querySelector('.child-element'))
showIcon
是 Vue 中 data 的新定义的变量,通过它配合 v-show,可以控制是否显示隐藏 icon 图标。resizeObserver
记得也要在 data 中定义一下。
修改后的效果如下:
针对项目,还可以更完善一下,比方说Vue路由跳转销毁当前页面前,做一个取消观察的操作。
beforeDestroy() {
this.resizeObserver.unobserve(document.querySelector('.child-element'))
// 将实例设置为 null,方便 JavaScript 垃圾回收
this.resizeObserver = null;
}
还有个方法,取消可以所有的观察活动,如果之前添加的观察事件比较多,也可以用这个。
this.resizeObserver.disconnect()
虽然这个问题看似不起眼,但找到合适的解决方案对用户体验至关重要。通过本文的介绍,希望能给大家在处理类似问题时提供一些思路和启发。使用媒体查询可以快速解决大多数简单问题,而使用ResizeObserver API则可以实现更精确的控制,特别是在需要针对单个元素进行尺寸监控时。
监听DOM尺寸变化 - ResizeObserver_监听dom元素大小变化-CSDN博客
Resize Observer
"ResizeObserver" | Can I use... Support tables for HTML5, CSS3, etc
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
伦敦关键词排名作用辽宁刷手机关键词排名关键词seo排名权威火9星宁海关键词优化首页排名东莞专业seo关键词排名价格茅台排名前五评价关键词seo关键词零金手指排名二徐州关键词快照排名温州市关键词排名代理百度关键词排名皆去云尚网络太原关键词排名收费滁州关键词排名收费郑州关键词排名方法潍坊潍城关键词优化排名抖音关键词怎么排名的怎么优化排名关键词关键词排名提升盟迸灬云速捷驻马店搜狗关键词优化排名软件深圳关键词排名点击如何稳定网站关键词的排名网站关键词排名消失了芦溪网站关键词优化排名价格关键词排名提取工具关键词快速排名ck云速捷灬东莞360关键词排名东莞地产关键词排名如何淘宝看关键词排名免费五金关键词排名培训广州百度关键词排名优化焦作平台长尾关键词排名优化荷塘区关键词seo排名优化黑帽seo逆冬关键词排名福建关键词排名优化费用郑州搜狗关键词优化排名代理西藏自治区淘宝刷关键词排名新乡官网关键词搜索排名提高神马网站关键词排名方案1688如何查关键词排名苏州园区搜狗关键词优化排名查微信关键词排名福建关键词排名查询系统灰色关键词排名系统焦作百度seo关键词排名系统关键词排名提升唯独金苹果男性用户搜索关键词排名信息化关键词排名灯塔关键词搜索排名软件合肥关键词排名技巧周口百度关键词搜索排名代理东营关键词排名怎么收费神马关键词排名查询工具seo关键词金手指排名一郑州整站关键词自然排名公司中山加盟淘宝关键词排名优化临安区关键词seo排名优化亚马逊排名关键词设置品牌关键词排名快速上线主关键词排名消失优化关键词排名找大将军22拼多多关键词排名怎么刷关键词快速排名敲云速捷大牌宝安关键词排名推广电话怎么搜索店铺宝贝关键词排名吉林长尾关键词排名淘宝都有关键词会影响排名专业刷搜狗关键词排名太原关键词排名点击咨询南通的关键词排名公司哪家好如何提高直通车关键词排名重庆百度关键词排名洛阳360seo关键词排名敦煌搜索关键词排名陕西app关键词排名优化低成本关键词优化排名松北区关键词seo排名优化淘宝商品名关键词搜索排名规律关键词点击排名工五指山关键词排名价格排名好的关键词推广联系方式宝贝关键词排名工具田家庵区关键词seo排名优化广东查关键词排名软件本溪关键词排名哪家便宜广东省关键词排名优化报价网站关键词快速排名要云速捷沾益区关键词seo排名优化攀枝花关键词排名外包海南省seo关键词排名拼多多关键词排名是按销量么绥化关键词快速排名淘宝关键词搜索不到排名关键词排名拍金手指科杰三十印刷关键词排名价格六安市网站关键词排名海南刷关键词排名系统佛山关键词排名企业淘宝手机端关键词排名优化是不是关键词排名不行关键词排名优化找1火星给力拼多多怎样提升关键词排名天津网站的关键词排名软件微信搜索关键词文章排名亚马逊哪里可以看关键词排名怎么根据关键词排名调价抖音加好友搜索关键词排名优化关键词排名首选金苹果深圳服务关键词排名托管关键词排名优化对接闲鱼关键词排名优化南京代理商关键词排名怎么做查关键词排名选择金手指浙江看关键词排名鹤壁360关键词点击排名优化山东行业关键词排名推广方式平山seo关键词排名优化费用朔州口碑好关键词排名正规关键词排名优惠码鄂城区关键词seo排名优化拼多多怎么查自己的关键词排名开发关键词排名工具关键词排名覀首选金手指14发包关键词排名技术苹果aso关键词排名网站关键词排名提高方法网站手机关键词排名外包关键词seo排名报价关键词排名丨云尚网络潮州关键词排名联系方式提高关键词排名姑云速捷靠谱关键词排名微首选金手指二六兰州网站关键词排名主关键词排名消失关键词排名查询去择火6星运城关键词排名优化湖南官网关键词点击排名天津关键词排名推广优化关键词排名唯独小钢炮邢台关键词排名哪里有名三亚关键词排名优化常德关键词推广排名泰州关键词排名系统一对一关键词排名经验淘宝关键词跟排名拼多多的关键词排名在哪里看淘宝关键词优化排名误区是什么吉林查询关键词排名关键词优化仟金手指排名十八1688如何做关键词排名湖南关键词点击排名软件淘宝关键词跟排名关键词平均排名计算公式泸州防城港关键词排名百度关键词的排名规则生意参谋怎么查询关键词排名鹰潭关键词快速排名关键词排名优化首选9火星2020装修关键词排名抖音查关键词排名百度关键词排名必小阳周到陕西推广关键词排名优化策略双流关键词排名性价比高新品关键词排名软件关键词排名差商丘360关键词搜索排名工具关键词前一百排名有哪些关键词快速排名qs云速捷丷淘宝关键词排名是怎么计算的网站关键词优化首页排名关键词排名飠小钢炮实力永州关键词万词霸屏排名穿越长尾关键词排名江苏快速关键词排名优化技巧花瓣搜索关键词排名关键词查不到排名找av搜索关键词排名看关键词排名吗国际站关键词排名查询工具如何看自己宝贝的关键词排名下拉刷关键词排名适合火星推荐刷关键词排名一金手指下拉吴桥手机关键词排名软件哪个好关键词排名描述兰州百度网站关键词排名关键词排名高清图直通车关键词预估排名是什么鹤壁网站长尾关键词排名技巧关键词排名首页费用贵州关键词优化排名费用关键词排名敝瘟 大将军1多少关键词排名优化软件关键词排名优化合作天水关键词排名的工具企业账号关键词排名代做关键词快速排名选取火10星泉州seo关键词排名怎样提高亚马逊关键词排名铜仁关键词排名推广直通车关键词排名方式求关键词排名优化竞价排名关键词多少钱