如何写好CSS系列之表单(form)

     表单模块可以分为两部分:一是表单的布局,也就是规范表单元素单元的排列位置;二是表单元素,如:输入框、单选、复选、列表组件、搜索组件等,由于列表组件、搜索组件不是单纯的css组件,所以暂且没有实现。

一、表单布局的实现

表单布局分为:表单容器、行、表单元素组(包含元素标题、元素)。并且实现根据屏幕进行自适应。示例效果如下:

从示例效果可以看出,布局会根据浏览器大小实现自适应。自适应代码如下:

@import '../mixins/breakpoints';

.f-form-container{
    @extend .border-sizing;
    margin-top: $form-row-space;
    > .f-form-row{
        display: block;   
        white-space: nowrap;
        margin: 0px;
        padding: 0px;  
        font-size: 0px;   
    }
    > .f-form-row + .f-form-row{
        margin-top: $form-row-space;
    }

    &.fluid{
        //自适应 xs = md -1
        @include media-breakpoint-max('xs'){
            .f-form-group{
                display: block;
                margin: 0px;
                + .f-form-group{
                    margin-top: get-space(lg);
                }
            }
        }
    }
}

首先对容器内部的f-form-row(表单行)进行了Magin-top的设置。然后增加了fluid类名,用于控制此表单列表是否需要支持自适应效果 。

二、表单元素的实现(部分)

表单元素只实现的input、checkbox、radio等三个基本元素类型。

2.1 input元素

   对Input元素主要实现了前缀和后缀的能力,其中前后缀中的内容可以任意宽度,现在引入的为font-awesome的web字体库。其实check和radio的图标也是来至于font-awesome。代码如下:

.f-form-control{
    display: inline-block;
    width: 100%;
    padding: $form-input-padding;
    border: 1px solid $form-border-color;
    font-family: $font-family;
    font-size: $font-size;
    line-height: $line-height;
    border-radius: $radius-width-base;
    outline: none;
    resize: none;
    &:focus{
        border-color: $form-border-focuscolor;
    }
}
.f-input-addon{
    //图标
    display: inline-block;
    font-size: $font-size;
    //line-height可以解决两个inline-block高度不致的问题(字体类型不一样的情况下)
    line-height: $line-height;
    padding: $form-input-padding;
    border: 1px solid $form-border-color;
    background-clip: padding-box;
    &:after{
        //解决fa与输入框字体一致的问题
        content: '';
        display: inline-block;
    }
}

//addon position
.f-form-group{     
    &.addon-before{
        .f-input-addon{
            border-radius: $radius-width-base;
            border-right-width: 0px;
            border-top-right-radius: 0px;
            border-bottom-right-radius: 0px;
        }
        .f-form-control{
            border-top-left-radius: 0px;
            border-bottom-left-radius: 0px; 
        }
    }
    &.addon-after{
        .f-input-addon{
            border-radius: $radius-width-base;
            border-left-width: 0px;
            border-top-left-radius: 0px;
            border-bottom-left-radius: 0px;
        }
        .f-form-control{
            border-top-right-radius: 0px;
            border-bottom-right-radius: 0px;
        }
    }
}

//处理input宽度占了100%的问题
.f-form-group{
    &.addon-before, &.addon-after{
        display: inline-table;
        .f-input-addon, .f-form-control{
            display: table-cell;
        } 
    }
}

其中遇到两个比较棘手的问题处理方案:

1. addon和control两个字体类型不致,导致在相同字体大小的情况下,两个容器的高度表现不一致。所以我就用了行高(line-height)来解决此问题

2. 由于control默认的宽度为100%,而加入了addon之后,会导致control的宽度溢出的现象,所以我就用了table-cell来解决此问题。

2.2.  checkbox和radio元素

示例代码只列出了checkbox的,其radio与此相同,就只改变了图标而已:

.f-form-control{
    &.checkbox{
        > input{
            display: none;
            &:checked{
                + .checkbox-icon{
                    @extend .fa-check-square-o;
                }
            }
        }
        > .checkbox-icon{
            @extend .vertical-middle;
            @extend .fa;
            @extend .fa-square-o;
            width: 16px;
            height: 16px;
            font-size: $font-size-md;
            margin-right: get-space('lg');
        }
        > .checkbox-desc{
            font-size: $font-size;
            @extend .vertical-middle;
        }
    }
}

由于引入的为font-awesome字体库,所以就控制了icon宽度,因为checkbox的选中与不选中的状态,fa的web字体库中对应图标的宽度不一样。

源码下载

转载于:https://www.cnblogs.com/cqhaibin/p/7822109.html

好看的form表单CSS样式可以通过以下几个方面来实现: 1. 字体样式的应用:可以通过CSS的字体样式属性来改变表单元素的字体样式,包括字体族科、字体风格、字体变形、字体加粗、字体大小等。可以根据需要给不同的表单元素设置不同的字体样式,比如按钮、文本框、下拉选择框等。 2. 设置宽高:可以使用CSS的宽度和高度属性来调整表单元素的大小。通过设置适当的宽度和高度,可以使表单元素看起来更加整齐美观。可以给整个表单容器设置宽度和高度,同时也可以给各个表单元素设置宽度和高度。 3. 边框样式:可以使用CSS的边框样式属性来给表单元素添加边框效果,通过调整边框的颜色、粗细和样式,可以改变表单元素的外观。可以给文本框、按钮等表单元素添加边框样式,使其更加突出。 4. 背景样式:可以使用CSS的背景样式属性来给表单元素添加背景效果,包括背景颜色和背景图片。通过设置适当的背景颜色或者背景图片,可以增加表单元素的视觉效果。可以给按钮、文本框等表单元素设置背景颜色或者背景图片,使其更加吸引人。 需要注意的是,以上只是一些常见的CSS样式应用,实际上可以根据具体需求和创意来设计出更加独特和个性化的表单样式。可以通过调整各种CSS属性来实现不同的效果,以达到满足用户需求和提升用户体验的目的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [表单花样样式](https://blog.csdn.net/weixin_30652879/article/details/97455140)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Form 表单详解:案例、CSS 美化](https://blog.csdn.net/hongshuteng/article/details/127401803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值