by @大漠
http://www.w3cplus.com/preprocessor/sass-component-10-minutes.html
<div class="message message-success">成功提示信息</div>
<div class="message message-error">报错提示信息</div>
<div class="message message-warning">警告提示信息</div>
<div class="message message-info">信息提示信息</div>
.message{
/*公用样式*/
}
.message-success {
/*Success样式*/
}
.message-error {
/*Error样式*/
}
.message-warning {
/*Warning样式*/
}
.message-info {
/*Info样式*/
}
.message{
padding: 0.5em;
margin-bottom: 0.5em;
border-radius: 0.15em;
border: 1px solid;
}
.message-success {
border-color: #d6e9c6;
background-color: #dff0d8;
color: #468847;
}
.message-error {
border-color: #eed3d7;
background-color: #f2dede;
color: #b94a48;
}
.message-warning {
border-color: #fbeed5;
background-color: #fcf8e3;
color: #c09853;
}
.message-info {
border-color: #bce8f1;
background-color: #d9edf7;
color: #3a87ad;
}
.message {
padding: 0.5em;
margin-bottom: 0.5em;
border-radius:0.15em;
border: 1px solid;
}
.message-success {
@extend .message;
background: #dff0d8;
}
.message-error {
@extend .message;
background: #f2dede;
}
.message-warning {
@extend .message;
background: #fcf8e3;
}
.message-info {
@extend .message;
background: #d9edf7;
}
.message,
.message-success,
.message-error,
.message-warning,
.message-info {
padding: 0.5em;
margin-bottom: 0.5em;
border-radius: 0.15em;
border: 1px solid; }
.message-success {
background: #dff0d8; }
.message-error {
background: #f2dede; }
.message-warning {
background: #fcf8e3; }
.message-info {
background: #d9edf7; }
%message {
padding: 0.5em;
margin-bottom: 0.5em;
border-radius:0.15em;
border: 1px solid;
}
.message-success {
@extend %message;
background: #dff0d8;
}
.message-error {
@extend %message;
background: #f2dede;
}
.message-warning {
@extend %message;
background: #fcf8e3;
}
.message-info {
@extend %message;
background: #d9edf7;
}
.message-success,
.message-error,
.message-warning,
.message-info {
padding: 0.5em;
margin-bottom: 0.5em;
border-radius: 0.15em;
border: 1px solid; }
.message-success {
background: #dff0d8; }
.message-error {
background: #f2dede; }
.message-warning {
background: #fcf8e3; }
.message-info {
background: #d9edf7; }
@mixin message($color) {
@extend %message;
color: $color;
border-color: lighten($color, 20%);
background: lighten($color, 40%);
}
.message-success {
@include message(#468847);
}
.message-error {
@include message(#b94a48);
}
.message-warning {
@include message(#c09853);
}
.message-info {
@include message(#3a87ad);
}
.message-success,
.message-error,
.message-warning,
.message-info {
padding: 0.5em;
margin-bottom: 0.5em;
border-radius: 0.15em;
border: 1px solid; }
.message-success {
color: #468847;
border-color: #7aba7b;
background: #bdddbd; }
.message-error {
color: #b94a48;
border-color: #d59392;
background: #f1dcdc; }
.message-warning {
color: #c09853;
border-color: #dbc59e;
background: #f7f1e8; }
.message-info {
color: #3a87ad;
border-color: #7ab5d3;
background: #c7e0ec; }
$message-types: (
(success #468847)
(error #b94a48)
(warning #c09853)
(info #3a87ad)
) !default;
%message {
padding: 0.5em;
margin-bottom: 0.5em;
border-radius:0.15em;
border: 1px solid;
}
@mixin message($color) {
@extend %message;
color: $color;
border-color: lighten($color, 20%);
background: lighten($color, 40%);
}
@each $message-type in $message-types {
$type: nth($message-type, 1);
$color: nth($message-type, 2);
.message-#{$type} {
@include message($color);
}
}
.message-success,
.message-error,
.message-warning,
.message-info {
padding: 0.5em;
margin-bottom: 0.5em;
border-radius: 0.15em;
border: 1px solid; }
.message-success {
color: #468847;
border-color: #7aba7b;
background: #bdddbd; }
.message-error {
color: #b94a48;
border-color: #d59392;
background: #f1dcdc; }
.message-warning {
color: #c09853;
border-color: #dbc59e;
background: #f7f1e8; }
.message-info {
color: #3a87ad;
border-color: #7ab5d3;
background: #c7e0ec; }
$message-colors: (
success: (
text: #468847,
background: #dff0d8,
border: darken(adjust-hue(#dff0d8, -10), 5%)
),
error: (
text: #b94a48,
background: #f2dede,
border: darken(adjust-hue(#f2dede, -10), 3%)
),
warning: (
text: #c09853,
background: #fcf8e3,
border: darken(adjust-hue(#fcf8e3, -10), 3%)
),
info: (
text: #3a87ad,
background: #d9edf7,
border: darken(adjust-hue(#d9edf7, -10), 7%)
)
) !default;
%message {
padding: 0.5em;
margin-bottom: 0.5em;
border-radius:0.15em;
border: 1px solid;
}
@each $type, $colors in $message-colors {
.message-#{$type} {
@extend %message;
border-color: map-get($colors, border);
background-color: map-get($colors, background);
color: map-get($colors, text);
}
}
.message-success,
.message-error,
.message-warning,
.message-info {
padding: 0.5em;
margin-bottom: 0.5em;
border-radius: 0.15em;
border: 1px solid; }
.message-success {
border-color: #d6e9c6;
background-color: #dff0d8;
color: #468847; }
.message-error {
border-color: #eed3d7;
background-color: #f2dede;
color: #b94a48; }
.message-warning {
border-color: #fbeed5;
background-color: #fcf8e3;
color: #c09853; }
.message-info {
border-color: #bce8f1;
background-color: #d9edf7;
color: #3a87ad; }