一個網站可以有多種配色方案,例如正常模式,夜間模式等。
簡單示例一個通過點擊toggle 按鈕,切換body元素的class,達到切換配色模式的angularjs小app。
1. Live範例可以在以下Codepen網址查看: http://codepen.io/ChristyWang/pen/NPxNMx
2. Toggle button源代碼由以下網站生成:https://proto.io/freebies/onoff/
3. 主要文件有兩個:index.html和main.css。
index.html文件代碼如下:
<!DOCTYPE html>
<html>
<head>
<link rel='stylesheet' type='text/css' href='main.css'>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js"></script>
<script>
var myApp = angular.module('App', []);
myApp.controller('AppController',
function($scope) {
<span style="white-space:pre"> </span>//默認lightswitch關閉
$scope.lightswitch = 'off';
$scope.switchTheme = function() {
var checkProperty = document
.getElementById('myonoffswitch').checked;
//如果toggle button被點擊,body元素class設爲“on”
if (checkProperty) {
$scope.lightswitch = 'on';
}
//如果toggle button再次被點擊,body元素class設爲“off”
else {
$scope.lightswitch = 'off';
}
}
});
</script>
</head>
<body ng-app='App' ng-controller='AppController' ng-class="lightswitch">
<div class="onoffswitch">
<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" ng-click="switchTheme()">
<label class="onoffswitch-label" for="myonoffswitch"> <span class="onoffswitch-inner"></span>
<span class="onoffswitch-switch"></span>
</label>
</div>
<p class='p1'>test line 1</p>
<p class='p2'>test line 2</p>
</body>
</html>
/*for light swtich*/
.off p {
color: red;
}
body.on{
background-color:grey;
}
.on p {
color: blue;
}
/*for the toggle button*/
.onoffswitch {
position: relative; width: 67px;
-webkit-user-select:none; -moz-user-select:none; -ms-user-select: none;
}
.onoffswitch-checkbox {
display: none;
}
.onoffswitch-label {
display: block; overflow: hidden; cursor: pointer;
border: 2px solid #999999; border-radius: 20px;
}
.onoffswitch-inner {
display: block; width: 200%; margin-left: -100%;
-moz-transition: margin 0.3s ease-in 0s; -webkit-transition: margin 0.3s ease-in 0s;
-o-transition: margin 0.3s ease-in 0s; transition: margin 0.3s ease-in 0s;
}
.onoffswitch-inner:before, .onoffswitch-inner:after {
display: block; float: left; width: 50%; height: 22px; padding: 0; line-height: 22px;
font-size: 14px; color: white; font-family: Trebuchet, Arial, sans-serif; font-weight: bold;
-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;
}
.onoffswitch-inner:before {
content: "ON";
padding-left: 10px;
background-color: #0064D2; color: ;
}
.onoffswitch-inner:after {
content: "OFF";
padding-right: 10px;
background-color: #F0F0F0; color: #999999;
text-align: right;
}
.onoffswitch-switch {
display: block; width: 18px; margin: 2px;
background: #FFFFFF;
border: 2px solid #999999; border-radius: 20px;
position: absolute; top: 0; bottom: 0; right: 41px;
-moz-transition: all 0.3s ease-in 0s; -webkit-transition: all 0.3s ease-in 0s;
-o-transition: all 0.3s ease-in 0s; transition: all 0.3s ease-in 0s;
}
.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
margin-left: 0;
}
.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
right: 0px;
}
4. 截圖展示:
lightswich off:
lightswitch on: