美文网首页
使用sass实现查询区域表单响应式布局

使用sass实现查询区域表单响应式布局

作者: 听见雨山 | 来源:发表于2021-09-18 15:03 被阅读0次

技术栈:vue+iview

曾经有一个列表页面,设计师同学要求对查询区域表单进行布局,要求如下:

1. 查询区域表单响应式布局,右侧尾部到容易有边框的距离为0
2. 根据分辨率大小控制每行展示的数量
3. 多行时,查询按钮与上一行的输入框左侧对齐
4. 单行时,查询按钮直接跟在最后一个输入框的后面

本来想采用iview的栅格布局的,但是看了一下第四点要求,于是还是决定自己写样式,哈哈哈,下面上代码~

template:

注意:表单的 label-width 必须保持一致,否则折行后会对不齐

<Form inline :label-width="70" :rules="queryValidate" class="query-form-box">
          <FormItem label="下拉:" prop="brandCode">
            <Select >
              <Option>全部</Option>
            </Select>
          </FormItem>
          <FormItem label="下拉:" prop="brandCode">
            <Select >
              <Option>全部</Option>
            </Select>
          </FormItem>
          <FormItem label="输入框:" prop="code">
            <Input clearable placeholder="请输入"></Input>
          </FormItem>
           <FormItem label="输入框:" prop="code">
            <Input clearable placeholder="请输入"></Input>
          </FormItem>
           <FormItem label="输入框:" prop="code">
            <Input clearable placeholder="请输入"></Input>
          </FormItem>
           <FormItem label="输入框:" prop="code">
            <Input clearable placeholder="请输入"></Input>
          </FormItem>
           <FormItem label="输入框:" prop="code">
            <Input clearable placeholder="请输入"></Input>
          </FormItem>
          <FormItem class="query-btns-box form-item-order-8">
            <Button type="primary">查询</Button>
            <Button style="margin-left: 10px">重置</Button>
          </FormItem>
        </Form>

scss:

主要还是使用媒体查询+flex的方案,针对上述第四点要求,我的思路是:给按钮所在的 form-item 进行编号;当按钮的编号小于等于列数时,则表示按钮当前在第一行,此时去掉其左边距,就OK了


/* ------- start 所有列表页面查询表单响应式布局 ------- */ 
.query-form-box {
  display: flex;
  flex-flow: row wrap;

  .ivu-form-item {
    padding-right: 15px;
    margin-right: 0 !important;
  }

  // 查询按钮
  .query-btns-box {
    margin-bottom: 12px;
  }
}
.query-form-box.ivu-form.ivu-form-inline .ivu-select, 
.query-form-box.ivu-form.ivu-form-inline .ivu-input-wrapper {
  width: 100% !important;
}


// $columns: 查询表单的列数 
@mixin queryFormLayout($columns: 4) {
  .query-form-box {
    .ivu-form-item {
      width: (100% / $columns);
      &:nth-child(#{$columns}n) {
        padding-right: 0;
      }
    }
    
    // @@备注:!!若查询表单只有一行,则按钮直接跟在输入框后面,不用和上方输入框对齐,因此需要清除左边距
    @for $i from 1 through $columns {
      @if $i <= $columns {
        .form-item-order-#{$i} { 
          .ivu-form-item-content {
            margin-left: 0 !important;
          }
        }
      }
    }
  }
}

@media screen and (max-width: 1200px) {
  @include queryFormLayout(3)
}

@media screen and (min-width: 1201px) and (max-width: 1399px) {
  @include queryFormLayout(4)
}

@media screen and (min-width: 1400px) and (max-width: 1799px) {
  @include queryFormLayout(5)
}

@media screen and (min-width: 1800px){
  @include queryFormLayout(6)
}
/* ------- end 所有列表页面查询表单响应式布局 ------- */ 

上述方式已经能实现设计师妹妹的要求了,但是肯定还不是最优解决方案,希望能有幸得到各位大神指点~

相关文章

  • 使用sass实现查询区域表单响应式布局

    技术栈:vue+iview 曾经有一个列表页面,设计师同学要求对查询区域表单进行布局,要求如下: 1. 查询区域表...

  • Html5响应式布局——Media Query

    使用Media Query (媒介查询)来实现响应式布局。 CSS中的Media Query设备宽高: devic...

  • 14.《Angular响应式表单》

    一、使用响应式表单 Angular 的响应式表单能让实现响应式编程风格更容易,这种编程风格更倾向于在非 UI 的数...

  • Flex、Grid、媒体查询实现响应式布局

    本篇文章主要讲述使用Flex布局、Grid布局以及媒体查询三种方式来实现响应式布局。文章涉及代码在线coding地...

  • grid实现响应式布局

    一行 CSS 代码实现响应式布局 – 使用 Grid 实现的响应式布局 在这篇文章中,我将教你如何使用 CSS G...

  • 响应式布局---bootstrap框架

    移动端WEB开发之响应式布局 1.0 响应式开发原理 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进...

  • 响应式布局

    了解响应式开发原理 就是使用媒体查询针对不同宽度设备进行布局和样式的设置,从而适配不同设备的目的 响应式布局容器 ...

  • Tailwind Telegram

    响应式即时聊天布局方案 页面结构 页面布局 布局采用从左至右三栏布局,分别左侧区域、中间区域、右侧区域。 左侧区域...

  • 02、CSS3-响应式布局

    响应式布局原理 第一步:Meta标签 一、响应式布局 二、viewport视口 三、媒体查询 媒体查询可用于检测很...

  • 移动 web 开发 —— 响应式布局

    1.0 响应式开发原理 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不...

网友评论

      本文标题:使用sass实现查询区域表单响应式布局

      本文链接:https://www.haomeiwen.com/subject/effygltx.html