sass @media

@media

Sass 中的 @media 指令和 CSS 的使用规则一样的简单,但它有另外一个功能,可以嵌套在 CSS 规则中。有点类似 JS 的冒泡功能一样,如果在样式中使用 @media 指令,它将冒泡到外面。来看一个简单示例:

.sidebar {
  width: 300px;
  @media screen and (orientation: landscape) {
    width: 500px;
  }
}

编译出来:

.sidebar {
  width: 300px; }
  @media screen and (orientation: landscape) {
    .sidebar {
      width: 500px; } }

@media 也可以嵌套 @media:

@media screen {
  .sidebar {
    @media (orientation: landscape) {
      width: 500px;
    }
  }
}

此时编译出来:

@media screen and (orientation: landscape) {
  .sidebar {
    width: 500px; } }


### 如何在 Vue 中使用 `@media` 查询实现响应式布局 #### 使用 CSS 和 SCSS/SASS 编写样式 为了使组件能够适应不同尺寸的屏幕,在编写样式时可以利用 `@media` 查询来定义不同的断点。这允许开发者针对特定宽度范围内的设备应用定制化的样式。 对于基于 Element UI 的日期选择器组件,当屏幕的最大宽度不超过 768px 时,会调整其内部结构以更好地适配较小屏幕: ```css /* 定义媒体查询 */ @media screen and (max-width: 768px) { /* 自定义容器类名下的元素样式 */ .customCon .el-picker-panel__body { display: flex; flex-direction: column; justify-content: center; align-items: center; } .customCon .el-date-range-picker__content { width: 100%; } } ``` 上述代码片段展示了如何通过媒体查询改变 `.customCon` 类下某些子元素的行为[^2]。 #### 结合 JavaScript 动态监听视窗大小变化 除了静态地设定样式外,还可以借助 JavaScript 来动态监测页面加载完成后的状态以及后续任何可能发生的窗口尺寸变动事件。一旦检测到这些情况发生,则可以根据实际情况重新计算并更新界面布局参数。 ```javascript window.addEventListener('load', function() { // 页面初次渲染完成后执行相应逻辑... }); ``` 这段脚本会在整个文档完全载入之后触发一次回调函数调用,可用于初始化一些依赖于 DOM 存在的操作[^3]。 #### 测试与验证效果 最后一步是确保所做的一切都能正常工作。为此可以在项目根目录下适当位置放置一张背景图作为占位符,并为其指定固定的宽高属性;接着尝试缩放浏览器窗口观察该图像是否会随视口比例自动调整大小——如果一切顺利的话,这就意味着已经成功实现了基本的响应式特性[^4]。 #### 组件化开发中的注意事项 考虑到 Vue 是一个单页应用程序框架,因此建议尽可能将样式封装进各个独立的功能模块内而不是全局作用域中。这样做不仅有助于减少潜在的选择器冲突风险,同时也便于维护和管理复杂的前端工程。 ```html <template> <!-- HTML模板 --> </template> <script> export default { name: 'ResponsiveComponent', }; </script> <style scoped lang="scss"> // 只影响当前组件的局部样式 .customCon { @media only screen and (min-device-width : 320px) and (max-device-width : 480px){ background-color:red; } @media only screen and (min-width : 768px){ background-color:green; } ... } </style> ``` 以上示例说明了如何在一个单独的 Vue 单文件组件里声明带有条件性的视觉表现规则,从而让最终产品具备良好的跨平台兼容性和用户体验一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值