Yo : ./lib/widget/yo-suggest.scss
源代码
源代码
@charset "utf-8"; // 定义suggest的基础构造 @mixin _suggest { > .operate { position: relative; overflow: hidden; font-size: map-get($suggest, font-size); line-height: map-get($suggest, height); padding: map-get($suggest, op-padding); @include border( $border-width: 0 0 1px, $border-color: map-get($suggest, border-color) ); background-color: map-get($suggest, op-bgcolor); > .action { display: block; position: relative; z-index: 2; height: map-get($suggest, height); } .input { width: 100%; height: 100%; padding: 0 .3rem; @include appearance; border: 1px solid map-get($suggest, border-color); @include border-radius(map-get($suggest, radius)); background-color: map-get($suggest, bgcolor); color: map-get($suggest, color); font-size: map-get($suggest, font-size); line-height: map-get($base, line-height); vertical-align: top; } .yo-ico-delete, .yo-ico-fresh, .yo-ico-stop, .yo-ico-loading { display: none; position: absolute; top: 0; right: 0; height: 100%; padding: 0 .08rem; color: map-get($suggest, ico-color); } .yo-ico-loading { @include animation(rotate 1s infinite linear); @include transform-origin(center); } .label { @include flexbox; position: absolute; top: 0; left: 50%; @include transition(left .2s ease-in); @include transform(translatex(-50%) translatez(0)); color: map-get($suggest, placeholder-color); } .placeholder { margin-left: .08rem; } > .cancel { position: absolute; top: 50%; right: 0; @include transform(translatey(-50%)); width: map-get($suggest, cancel-width); padding: .1rem 0; color: map-get($suggest, cancel-color); text-align: center; } } > .cont { display: none; background-color: map-get($suggest, mask-bgcolor); > .recommend, > .result { @include fullscreen; } } // focus形态 &-on { > .operate { .input { border-color: map-get($suggest, on-border-color); background-color: map-get($suggest, on-bgcolor); } .label { left: .1rem; @include transform(translatex(0) translatez(0)); } .yo-ico-delete { display: inline-block; } } // 非独占形态,激活时展开cont,并使用绝对定位拉伸获得高度 // 需要通过设置top值来确定cont区域 > .cont { display: block; @include fullscreen(map-get($z-index, suggest)); top: .88rem; } } // 独占形态搜索 &-modal { @include flexbox; @include flex-direction(column); @include fullscreen(map-get($z-index, suggest), fixed); // 独占形态时,在foucs时显示取消按钮 > .operate { padding-right: map-get($suggest, cancel-width) !important; } // 独占形态时自动展开cont,并使用flex获得高度 > .cont { display: block; position: relative; top: 0; @include flex(1, column); } } } /** * @module widget * @method yo-suggest * @version 1.6.0 * @description 构造yo-suggest的自定义使用方法(原yo-search) * @demo http://doyoe.github.io/Yo/demo/widget/yo-suggest.html * @param {String} $name 定义扩展名称 <1.0.0> * @param {Length} $height 高度 <1.0.0> * @param {Length} $font-size 字号大小 <1.0.0> * @param {Length} $op-padding 搜索区内补白 <1.0.0> * @param {Length} $radius 搜索框圆角半径长度 <1.0.0> * @param {Color} $bordercolor 边框色 <1.0.0, 2.0.0> * @param {Color} $border-color 边框色 <2.0.0> * @param {Color} $bgcolor 背景色 <1.0.0> * @param {Color} $color 文本色 <1.0.0> * @param {Color} $on-bordercolor 激活边框色 <1.0.0, 2.0.0> * @param {Color} $on-border-color 激活边框色 <2.0.0> * @param {Color} $on-bgcolor 激活背景色 <1.0.0> * @param {Color} $placeholder-color 占位符背景色 <1.0.0> * @param {Color} $ico-color 操作区ico颜色 <1.0.0> * @param {Color} $cancel-color 取消按钮颜色 <1.0.0> * @param {Color} $op-bgcolor 搜索区域背景色 <1.0.0> * @param {Color} $mask-bgcolor 遮罩背景色 <1.0.0> * @param {Length} $cancel-width 取消按钮区域宽度 <1.4.0> */ @mixin yo-suggest( $name: default, $height: default, $font-size: default, $op-padding: default, $radius: default, $border-color: default, $bgcolor: default, $color: default, $on-border-color: default, $on-bgcolor: default, $placeholder-color: default, $ico-color: default, $cancel-color: default, $op-bgcolor: default, $mask-bgcolor: default, $cancel-width: default) { // 区别是否新增实例还是修改本身 $name: if($name == default, "", "-#{$name}"); // 如果值为default,则取config的定义 @if $height == default { $height: map-get($suggest, height); } @if $font-size == default { $font-size: map-get($suggest, font-size); } @if $op-padding == default { $op-padding: map-get($suggest, op-padding); } @if $radius == default { $radius: map-get($suggest, radius); } @if $border-color == default { $border-color: map-get($suggest, border-color); } @if $bgcolor == default { $bgcolor: map-get($suggest, bgcolor); } @if $color == default { $color: map-get($suggest,color); } @if $on-border-color == default { $on-border-color: map-get($suggest, on-border-color); } @if $on-bgcolor == default { $on-bgcolor: map-get($suggest, on-bgcolor); } @if $placeholder-color == default { $placeholder-color: map-get($suggest, placeholder-color); } @if $ico-color == default { $ico-color: map-get($suggest, ico-color); } @if $cancel-color == default { $cancel-color: map-get($suggest, cancel-color); } @if $op-bgcolor == default { $op-bgcolor: map-get($suggest, op-bgcolor); } @if $mask-bgcolor == default { $mask-bgcolor: map-get($suggest, mask-bgcolor); } @if $cancel-width == default { $cancel-width: map-get($suggest, cancel-width); } .yo-suggest#{$name} { > .operate { @if $font-size != map-get($suggest, font-size) { font-size: $font-size; } @if $height != map-get($suggest, height) { line-height: $height; } @if $op-padding != map-get($suggest, op-padding) { padding: $op-padding; } @if $op-bgcolor != map-get($suggest, op-bgcolor) { background-color: $op-bgcolor; } &::after { @if $border-color != map-get($suggest, border-color) { border-color: $border-color; } } > .action { @if $height != map-get($suggest, height) { height: $height; } > .input { @if $border-color != map-get($suggest, border-color) { border-color: $border-color; } @if $radius != map-get($suggest, radius) { border-radius: $radius; } @if $bgcolor != map-get($suggest, bgcolor) { background-color: $bgcolor; } @if $color != map-get($suggest, color) { color: $color; } @if $font-size != map-get($suggest, font-size) { font-size: $font-size; } @if $height != map-get($suggest, height) { line-height: $height; } } > .yo-ico-delete, > .yo-ico-fresh, > .yo-ico-stop { @if $ico-color != map-get($suggest, ico-color) { color: $ico-color; } } > .label { @if $placeholder-color != map-get($suggest, placeholder-color) { color: $placeholder-color; } } } > .cancel { @if $cancel-width != map-get($suggest, cancel-width) { width: $cancel-width; } @if $cancel-color != map-get($suggest, cancel-color) { color: $cancel-color; } } } > .cont { @if $mask-bgcolor != map-get($suggest, mask-bgcolor) { background-color: $mask-bgcolor; } } // focus时 &-on { > .operate { .input { @if $on-border-color != map-get($suggest, on-border-color) { border-color: $on-border-color; } @if $on-bgcolor != map-get($suggest, on-bgcolor) { background-color: $on-bgcolor; } } } } // 独占形态 &-modal { // 独占形态时,在foucs时显示取消按钮 > .operate { @if $cancel-width != map-get($suggest, cancel-width) { padding-right: #{$cancel-width} !important; } } } // 增量扩展 @content; } } // 调用本文件时载入suggest基础构造 .yo-suggest { @include _suggest; }