add Checkbox UI
add Checkbox UI
This commit is contained in:
parent
4925f85fea
commit
6c5fbd8b04
13 changed files with 216 additions and 16 deletions
2
dist/styles/iview.all.css
vendored
2
dist/styles/iview.all.css
vendored
File diff suppressed because one or more lines are too long
2
dist/styles/iview.css
vendored
2
dist/styles/iview.css
vendored
File diff suppressed because one or more lines are too long
|
@ -74,12 +74,41 @@
|
||||||
<Radio value="爪哇犀牛"></Radio>
|
<Radio value="爪哇犀牛"></Radio>
|
||||||
<Radio value="印度黑羚"></Radio>
|
<Radio value="印度黑羚"></Radio>
|
||||||
</Radio-group>
|
</Radio-group>
|
||||||
|
<br><br><br><br>
|
||||||
|
<Checkbox :checked.sync="radio">Checkbox</Checkbox>
|
||||||
|
<br><br>
|
||||||
|
<Checkbox-group :model="social">
|
||||||
|
<Checkbox value="twitter">
|
||||||
|
<Icon type="social-twitter"></Icon>
|
||||||
|
<span>Twitter</span>
|
||||||
|
</Checkbox>
|
||||||
|
<Checkbox value="facebook">
|
||||||
|
<Icon type="social-facebook"></Icon>
|
||||||
|
<span>Facebook</span>
|
||||||
|
</Checkbox>
|
||||||
|
<Checkbox value="github">
|
||||||
|
<Icon type="social-github"></Icon>
|
||||||
|
<span>Github</span>
|
||||||
|
</Checkbox>
|
||||||
|
<Checkbox value="snapchat">
|
||||||
|
<Icon type="social-snapchat"></Icon>
|
||||||
|
<span>Snapchat</span>
|
||||||
|
</Checkbox>
|
||||||
|
</Checkbox-group>
|
||||||
|
<br><br>
|
||||||
|
<Checkbox :checked.sync="disabledSingle" disabled>Checkbox</Checkbox>
|
||||||
|
<Checkbox-group :model="disabledGroup">
|
||||||
|
<Checkbox value="香蕉" disabled></Checkbox>
|
||||||
|
<Checkbox value="苹果" disabled></Checkbox>
|
||||||
|
<Checkbox value="西瓜"></Checkbox>
|
||||||
|
</Checkbox-group>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { Radio, Alert, Icon, Collapse, Button } from 'iview';
|
import { Radio, Alert, Icon, Collapse, Button, Checkbox } from 'iview';
|
||||||
|
|
||||||
const RadioGroup = Radio.Group;
|
const RadioGroup = Radio.Group;
|
||||||
const Panel = Collapse.Panel;
|
const Panel = Collapse.Panel;
|
||||||
|
const CheckboxGroup = Checkbox.Group;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
@ -89,7 +118,9 @@
|
||||||
Icon,
|
Icon,
|
||||||
Collapse,
|
Collapse,
|
||||||
Panel,
|
Panel,
|
||||||
Button
|
Button,
|
||||||
|
Checkbox,
|
||||||
|
CheckboxGroup
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
|
||||||
|
@ -100,7 +131,10 @@
|
||||||
radioGroup: '段模',
|
radioGroup: '段模',
|
||||||
activeKey: [1,2],
|
activeKey: [1,2],
|
||||||
phone: 'apple',
|
phone: 'apple',
|
||||||
animal: '爪哇犀牛'
|
animal: '爪哇犀牛',
|
||||||
|
social: ['facebook', 'github'],
|
||||||
|
disabledSingle: true,
|
||||||
|
disabledGroup: ['苹果']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "iview",
|
"name": "iview",
|
||||||
"version": "0.0.12",
|
"version": "0.0.13",
|
||||||
"title": "iView",
|
"title": "iView",
|
||||||
"description": "A high quality UI components Library with Vue.js",
|
"description": "A high quality UI components Library with Vue.js",
|
||||||
"homepage": "http://www.iviewui.com",
|
"homepage": "http://www.iviewui.com",
|
||||||
|
|
|
@ -46,7 +46,7 @@ a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: color @transition-time ease;
|
.transition(color @transition-time ease);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: @link-hover-color;
|
color: @link-hover-color;
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
content: '';
|
content: '';
|
||||||
border-radius: inherit;
|
border-radius: inherit;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
.transition(opacity @animation-time);
|
.transition(opacity @transition-time);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
1
styles/components/checkbox.less
Normal file
1
styles/components/checkbox.less
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.checkboxFn();
|
|
@ -10,3 +10,4 @@
|
||||||
@import "message";
|
@import "message";
|
||||||
@import "notice";
|
@import "notice";
|
||||||
@import "radio";
|
@import "radio";
|
||||||
|
@import "checkbox";
|
|
@ -41,7 +41,7 @@
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border: 1px solid @border-color-base;
|
border: 1px solid @border-color-base;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
.transition(all @animation-time @ease-in-out);
|
.transition(all @transition-time @ease-in-out);
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
content: ' ';
|
content: ' ';
|
||||||
background-color: @primary-color;
|
background-color: @primary-color;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
.transition(all @animation-time @ease-in-out);
|
.transition(all @transition-time @ease-in-out);
|
||||||
.transform(scale(0));
|
.transform(scale(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@
|
||||||
&:after {
|
&:after {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
.transform(scale(1));
|
.transform(scale(1));
|
||||||
.transition(all @animation-time @ease-in-out);
|
.transition(all @transition-time @ease-in-out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ span.@{radio-prefix-cls} + * {
|
||||||
line-height: 26px;
|
line-height: 26px;
|
||||||
color: @btn-default-color;
|
color: @btn-default-color;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
.transition(all @animation-time ease-in-out);
|
.transition(all @transition-time ease-in-out);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border: 1px solid @border-color-base;
|
border: 1px solid @border-color-base;
|
||||||
border-left: 0;
|
border-left: 0;
|
||||||
|
@ -145,7 +145,7 @@ span.@{radio-prefix-cls} + * {
|
||||||
left: -1px;
|
left: -1px;
|
||||||
background: @border-color-base;
|
background: @border-color-base;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
.transition(all @animation-time ease-in-out);
|
.transition(all @transition-time ease-in-out);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
|
|
|
@ -93,7 +93,7 @@
|
||||||
user-select: none;
|
user-select: none;
|
||||||
.button-size(@btn-padding-base; @btn-font-size; @btn-border-radius);
|
.button-size(@btn-padding-base; @btn-font-size; @btn-border-radius);
|
||||||
.transform(translate3d(0, 0, 0));
|
.transform(translate3d(0, 0, 0));
|
||||||
.transition(all @animation-time linear);
|
.transition(all @transition-time linear);
|
||||||
|
|
||||||
> .@{css-prefix-iconfont} {
|
> .@{css-prefix-iconfont} {
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
|
|
158
styles/mixins/checkbox.less
Normal file
158
styles/mixins/checkbox.less
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
.checkboxFn(@checkbox-prefix-cls: ~"@{css-prefix}checkbox") {
|
||||||
|
@checkbox-inner-prefix-cls: ~"@{checkbox-prefix-cls}-inner";
|
||||||
|
|
||||||
|
// 普通状态
|
||||||
|
.@{checkbox-prefix-cls} {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
white-space: nowrap;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: none;
|
||||||
|
line-height: 1;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
.@{checkbox-inner-prefix-cls} {
|
||||||
|
border-color: #bcbcbc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-inner {
|
||||||
|
display: inline-block;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
border: 1px solid @border-color-base;
|
||||||
|
border-radius: 3px;
|
||||||
|
background-color: #fff;
|
||||||
|
.transition2(border-color @transition-time @ease-in-out,background-color @transition-time @ease-in-out);
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
display: table;
|
||||||
|
width: 5px;
|
||||||
|
height: 8px;
|
||||||
|
position: absolute;
|
||||||
|
top: 2px;
|
||||||
|
left: 4px;
|
||||||
|
border: 2px solid #fff;
|
||||||
|
border-top: 0;
|
||||||
|
border-left: 0;
|
||||||
|
.transform(rotate(45deg) scale(0));
|
||||||
|
.transition(all @transition-time @ease-in-out);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-input {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
z-index: 1;
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 选中状态
|
||||||
|
.@{checkbox-prefix-cls}-checked {
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
.@{checkbox-inner-prefix-cls} {
|
||||||
|
border-color: @primary-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{checkbox-inner-prefix-cls} {
|
||||||
|
border-color: @primary-color;
|
||||||
|
background-color: @primary-color;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
display: table;
|
||||||
|
width: 5px;
|
||||||
|
height: 8px;
|
||||||
|
position: absolute;
|
||||||
|
top: 2px;
|
||||||
|
left: 4px;
|
||||||
|
border: 2px solid #fff;
|
||||||
|
border-top: 0;
|
||||||
|
border-left: 0;
|
||||||
|
.transform(rotate(45deg) scale(1));
|
||||||
|
.transition(all @transition-time @ease-in-out .1s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 禁用
|
||||||
|
.@{checkbox-prefix-cls}-disabled {
|
||||||
|
&.@{checkbox-prefix-cls}-checked {
|
||||||
|
&:hover {
|
||||||
|
.@{checkbox-inner-prefix-cls} {
|
||||||
|
border-color: @border-color-base;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{checkbox-inner-prefix-cls} {
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
border-color: @border-color-base;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
animation-name: none;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
.@{checkbox-inner-prefix-cls} {
|
||||||
|
border-color: @border-color-base;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{checkbox-inner-prefix-cls} {
|
||||||
|
border-color: @border-color-base;
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
&:after {
|
||||||
|
animation-name: none;
|
||||||
|
border-color: #f3f3f3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{checkbox-inner-prefix-cls}-input {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
& + span {
|
||||||
|
color: #ccc;
|
||||||
|
cursor: @cursor-disabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{checkbox-prefix-cls}-wrapper {
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: @font-size-base;
|
||||||
|
display: inline-block;
|
||||||
|
& + & {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{checkbox-prefix-cls}-wrapper + span,
|
||||||
|
.@{checkbox-prefix-cls} + span {
|
||||||
|
margin-left: 8px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.@{checkbox-prefix-cls}-group {
|
||||||
|
font-size: @font-size-base;
|
||||||
|
&-item {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,3 +8,4 @@
|
||||||
@import "size";
|
@import "size";
|
||||||
@import "loading";
|
@import "loading";
|
||||||
@import "close";
|
@import "close";
|
||||||
|
@import "checkbox";
|
|
@ -3,3 +3,8 @@
|
||||||
-moz-transition: @string;
|
-moz-transition: @string;
|
||||||
transition: @string;
|
transition: @string;
|
||||||
}
|
}
|
||||||
|
.transition2 (@string1, @string2) {
|
||||||
|
-webkit-transition: @string1 , @string2;
|
||||||
|
-moz-transition: @string1 , @string2;
|
||||||
|
transition: @string1 , @string2;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue