let Arr = [1, 100, 30, 20, 50, 40]
Arr.sort() //只能排序0-9以內的數組 結果[1, 100, 20, 30, 40, 50]
Arr.sort((a, b) => a - b) //返回正數則a排列在b之前,返回負數則b排列在a之前
console.log(Arr) //[1, 20, 30, 40, 50, 100]
//掛載原型
Array.prototype.MySort = function() {
return this.sort((a, b) => a - b)
}
let Arr = [1, 100, 30, 20, 50, 40]
Arr.MySort() //調用
console.log(Arr) // [1, 20, 30, 40, 50, 100]
21.年月日大小比較
//最新公告時間範圍:2020年1月23日-2020年1月30日
let startTime = '2020-1-22 0:00:00';
let endTime = '2020-1-31 9:00:00';
// 將字符串時間轉換成時間戳
let startTimestamp = new Date(startTime).getTime()
console.log(startTimestamp)
let endTimestamp = new Date(endTime).getTime()
console.log(endTimestamp)
// 當前時間的時間戳
let nowTimestamp = new Date().getTime();
console.log(nowTimestamp)
if (nowTimestamp >= startTimestamp && nowTimestamp < endTimestamp) {
console.log('在時間範圍內')
}
20.動態修改animation的keyframes 樣式(Message 消息提示)
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>動態修改keyframes</title>
<style>
.popUpWindows {
width: 500px;
height: 80px;
line-height: 80px;
padding:0 20px;
background: #fff;
position: absolute;
animation: myfirst 4s;
left: 50%;
top: -100px;
margin-left: -250px;
color: #666;
font-weight: 800;
font-size: 20px;
box-shadow: 0px 0px 4px #999;
border-radius: 10px;
display: none;
}
.clickPopUpWindows {
height: 100px;
line-height: 100px;
width: 200px;
text-align: center;
color: snow;
background: springgreen;
cursor: pointer;
}
/* 默認動畫樣式 */
@keyframes myfirst {
0% {
top: -100px;
}
25% {
top: 50px;
}
50% {
top: 50px;
}
75% {
top: 50px;
}
100% {
top: -100px;
}
}
</style>
</head>
<body>
<p><b>注意:</b> 該實例在 Internet Explorer 9 及更早 IE 版本是無效的。</p>
<div class="popUpWindows">這是一個彈窗</div>
<div class="clickPopUpWindows" onclick="ClickPopUpWindows()">彈出窗口</div>
</body>
<script>
function ClickPopUpWindows() {
var popUpWindows = document.querySelector(".popUpWindows");
//設置display的block和none可以讓動畫執行多次
popUpWindows.style.display = "block";
// console.log(popUpWindows)
var mykeyframes = document.styleSheets[0];
// console.log(mykeyframes)
//清除之前寫入的動畫樣式
mykeyframes.deleteRule(2);
console.log(mykeyframes);
//在原先的位置插入新的的動畫樣式
mykeyframes.insertRule(
"@keyframes myfirst{"
+ "0%{top:-100px; background: #FFFFFF;}"
+ "10%{top:50px; background: #FFFFFF;}"
+ "25%{top:50px; background: #F0F9EB;}"
+ "50%{top:50px; background: #FDF6EC;}"
+ "90%{top:50px; background: #FEF0F0;}"
+ "100%{top:-100px; background: #FFFFFF;}"
, 2
);
window.setTimeout(() => {
popUpWindows.style.display = "none";
}, 4000)
}
</script>
</html>
19.圖片手風琴
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>jQuery手風琴特效</title>
<script type="text/javascript" src="http://tangjiusheng.com/skin/default/js/jquery-1.7.2.min.js"></script>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
.box {
width: 1210px;
height: 400px;
margin: 150px auto;
padding: 4px;
border: 1px solid #ccc;
box-sizing: border-box;
overflow: hidden;
}
.box .slide {
width: 200px;
float: left;
cursor: pointer;
transition: 1.5s;
}
.box .slide img {
width: 600px;
height: 400px;
}
.box .on {
width: 600px;
}
</style>
</head>
<body>
<div class="box">
<div class="slide "><img src="./img/1.jpg" /></div>
<div class="slide "><img src="./img/3.jpg" /></div>
<div class="slide "><img src="./img/2.jpg" /></div>
<div class="slide "><img src="./img/1.jpg" /></div>
</div>
</body>
<script type="text/javascript">
$(function () {
$(".slide").hover(function () {
$(this).stop().addClass("on").siblings().removeClass("on");
});
});
</script>
</html>
18.輪播圖
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
* {
margin: 0;
padding: 0;
}
ul {
list-style: none;
}
div {
width: 500px;
height: 300px;
position: relative;
box-sizing: border-box;
}
.carousel li {
position: absolute;
left: 0;
top: 0;
opacity: 0;
transition: opacity .3s;
/* 切換圖片時的過度效果 */
}
.carousel li a img {
width: 500px;
height: 300px;
}
.carousel .selection {
/* 顯示的圖片需要的類 */
opacity: 1;
z-index: 10;
}
.prev,
.next {
/* 左右箭頭的樣式 */
width: 50px;
height: 50px;
font-size: 30px;
text-align: center;
line-height: 50px;
background: white;
color: #aaa;
border: 1px solid #bbb;
border-radius: 50%;
opacity: .3;
position: absolute;
top: 50%;
transform: translateY(-50%);
z-index: 101;
cursor: pointer;
user-select: none;
}
.prev:hover,
.next:hover {
opacity: .8;
}
.prev {
left: 20px;
}
.next {
right: 20px;
}
.circle {
position: absolute;
height: 8px;
left: 50%;
transform: translateX(-50%);
z-index: 200;
bottom: 20px;
}
.circle li {
width: 12px;
height: 12px;
border-radius: 50%;
background: rgba(180, 180, 180, .3);
border: 1px solid transparent;
float: left;
margin-left: 10px;
cursor: pointer;
}
.circle .current {
/* 選中小點的樣式 */
background: rgba(180, 180, 180, .8);
border: 1px solid rgb(50, 50, 50);
}
</style>
<body>
<div>
<ul class="carousel">
<li class="selection"><a href="#1"><img src="./img/1.jpg" alt=""></a></li>
<li><a href="#2"><img src="./img/2.jpg" alt=""></a></li>
<li><a href="#3"><img src="./img/3.jpg" alt=""></a></li>
</ul>
<div class="prev">
< </div> <div class="next"> >
</div>
<ul class="circle">
<li class="current"></li>
<li></li>
<li></li>
</ul>
</div>
<script>
var currentIndex = 0;//當前圖片的索引
var id;
var len = document.querySelector('.carousel').childElementCount;//得到ul下面li的個數
function carousel(index) {//建一個函數,用來提供一個索引然後切換到索引對應的圖片
if (currentIndex === len) {//判斷一下,當前圖片索引是否等於li的個數,因爲當前索引是從0開始的,所以總數的值是沒有的
currentIndex = index = 0
}
if (currentIndex < 0) {
currentIndex = index = len - 1;
}
document.querySelector('.current').className = '';//將頁面上有選中樣式的小點的樣式清空
document.querySelector('.circle li:nth-child(' + (index + 1) + ')').className = 'current'//根據索引來控制那個小點是顯示狀態
document.querySelector('.selection').className = '';//將頁面上有選中樣式的圖片的樣式清空
document.querySelector('.carousel li:nth-child(' + (index + 1) + ')').className = 'selection'//根據索引來控制那張圖片顯示
}
function prev() {//後退函數
currentIndex--;//當前索引減1
carousel(currentIndex) //調用carousel函數
}
function next() {//前進函數
currentIndex++;//當前索引加1
carousel(currentIndex) //調用carousel函數
}
var lis = document.querySelectorAll('.circle li');//得到頁面上的所有小點
for (var i = 0; i < lis.length; i++) {//for循環遍歷
lis[i].index = i;//將i值先保存一下
lis[i].onclick = function () {//
currentIndex = this.index
carousel(currentIndex);
}
}
function auto() {//自動切換
id = setInterval(next, 1000)//間隔函數,每一秒調用一次前進函數
}
function stop() {
clearInterval(id)
}
auto();
document.querySelector('.prev').onclick = prev//後退按鈕的點擊事件
document.querySelector('.next').onclick = next//前進按鈕的點擊事件
document.querySelector('div').onmouseover = stop//div的鼠標移入事件
document.querySelector('div').onmouseout = auto//div的鼠標移出事件
</script>
</body>
</html>
17.百度地圖點擊獲取座標
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="utf-8">
<!-- 注意修改鑰匙 -->
<!-- 僅展示用,無key -->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
<!-- 正確格式 -->
<!-- <script type="text/javascript"
src="https://api.map.baidu.com/api?v=2.0&ak=換成你的鑰匙&__ec_v__=20190126"></script> -->
</head>
<body style="height: 100%; margin: 0">
<div id="container" style="height: 100%"></div>
</body>
<script type="text/javascript">
var map = new BMap.Map("container");// 創建地圖實例
var point = new BMap.Point(121.479048, 31.240008);// 創建點座標
map.centerAndZoom(point, 15);// 初始化地圖,設置中心點座標和地圖級別
map.enableScrollWheelZoom();// 設置地圖可縮放大小
map.addEventListener("click", function (e) {
//獲取地圖紅標數組
var allOverlay = map.getOverlays();
//清空紅標
if (allOverlay !== "") {
for (var i = 0; i < allOverlay.length; i++) {
map.removeOverlay(allOverlay[i]);
}
}
//點擊地圖後的新座標
point = new BMap.Point(e.point.lng, e.point.lat);
var marker = new BMap.Marker(point); // 創建標註
map.addOverlay(marker);
window.setTimeout(()=>{
alert(e.point.lng + "," + e.point.lat);
},500)
map.panTo(new BMap.Point(e.point.lng, e.point.lat));//把點擊的點設置爲地圖中心點
});
function myFun(result) {
var cityName = result.name;
map.setCenter(cityName);
// alert(cityName);
}
var myCity = new BMap.LocalCity();
myCity.get(myFun);
// map.getCenter().lng + "," + map.getCenter().lat //獲取當前地圖中心點 的經緯度座標值
// map.getZoom() //獲取當前地圖的縮放級別
</script>
</html>
16.百度地圖根據輸入的位置獲取座標
調用LocalSearch方法會返回一串obj,裏邊有個數組,取的是匹配最接近的下標0的座標,當然肯定會有搜索空的時候,呵呵。
<html>
<head>
<title>根據地址查詢經緯度</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- 注意修改鑰匙 -->
<!-- 僅展示用,無key -->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
<!-- 正確格式 -->
<!-- <script type="text/javascript"
src="https://api.map.baidu.com/api?v=2.0&ak=換成你的鑰匙&__ec_v__=20190126"></script> -->
</head>
<body style="background:#f9f9f9; margin:0 auto">
<div style="width:730px;margin:30px auto;">要查詢的地址:<input id="address" type="text" value="北京天安門"
style="margin-right:50px;" />
<input type="button" value="查詢" onclick="searchByStationName();" />
<div id="container"></div>
</div>
</body>
<script type="text/javascript">
var map = new BMap.Map("container");
var localSearch = new BMap.LocalSearch(map);
function searchByStationName() {
var keyword = document.getElementById("address").value;
localSearch.setSearchCompleteCallback(function (searchResult) {
var lnglatArr = [];
// console.log(searchResult)
var poi = searchResult.getPoi(0);
lnglatArr = [poi.point.lng, poi.point.lat];
console.log(lnglatArr)
window.alert(lnglatArr);
});
localSearch.search(keyword);
}
</script>
</html>
15.下單側邊彈窗
js版
<div class="side-windows" id="sideWindowsID">xxx 剛剛下單啦</div>
.side-windows{
background: rgba(0, 0, 0,0.4);
color: #fff;
height: 26px;
line-height: 26px;
font-size: 12px;
padding: 0 8px;
text-align: center;
border-radius: 20px;
position: fixed;
top: 40px;
display: none;
}
/* 下單彈窗*/
var sideWindowsID = document.getElementById("sideWindowsID");
sideWindowsID.style.display = 'block';
// 獲取彈窗的寬度
var PopupWindowWidth = sideWindowsID.clientWidth;
// 將彈窗脫離視圖層
sideWindowsID.style.left = -PopupWindowWidth + 'px';
// 利用定時器將窗口顯示到視圖層內
var tid = setInterval(() => {
sideWindowsID.style.left = sideWindowsID.offsetLeft + 1 + "px";
v = parseInt(sideWindowsID.style.left);
if (v > 0) clearInterval(tid)
}, 0);
//3秒後在執行
window.setTimeout(() => {
// 利用定時器將窗口移除到視圖層外
var tid1 = setInterval(() => {
sideWindowsID.style.left = sideWindowsID.offsetLeft -1 + "px";
v = parseInt(sideWindowsID.style.left);
if (v < -PopupWindowWidth) {
clearInterval(tid1)
sideWindowsID.style.display = 'none';
}
}, 0);
}, 3000)
css版,注意,彈窗寬度是寫死的
<div class="side-windows-1" id="sideWindowsID1">xxx 剛剛下單啦</div>
.side-windows-1{
background: rgba(0, 0, 0,0.4);
color: #fff;
height: 26px;
line-height: 26px;
font-size: 12px;
padding: 0 8px;
text-align: center;
border-radius: 20px;
position: fixed;
top: -100px;
width: 100px;
animation:popover-animation 4s;
-webkit-animation:popover-animation 4s;
}
@keyframes popover-animation
{
0% {left:-100px; top:0px;}
25% {left:0px; top:0px;}
50% {left:0px; top:0px;}
75% {left:0px; top:0px;}
100% {left:-100px; top:0px;}
}
@-webkit-keyframes popover-animation /* Safari and Chrome */
{
0% {left:-100px; top:0px;}
25% {left:0px; top:0px;}
50% {left:0px; top:0px;}
75% {left:0px; top:0px;}
100% {left:-100px; top:0px;}
}
14.動態添加寬度
<div class="side-windows" id="sideWindows">刷新頁面觀看</div>
.side-windows{
background: rgba(0, 0, 0,0.5);
color: #fff;
width: 0px;
height: 200px;
line-height: 30px;
text-align: center;
position: fixed;
top: 40px;
}
var tid = setInterval("IncreaseTheWidth()", 1);
function IncreaseTheWidth() {
document.getElementById("sideWindows").style.width = document.getElementById("sideWindows").clientWidth + 1 + "px";
v = parseInt(document.getElementById("sideWindows").style.width);
if (v > 100) clearInterval(tid)
}
13.滾動條的樣式修改
::-webkit-scrollbar 滾動條整體部分
::-webkit-scrollbar-track 滾動條的軌道(裏面裝有Thumb)
::-webkit-scrollbar-thumb 滾動條裏面的小滑塊
::-webkit-scrollbar-corner 邊角,即兩個滾動條的交匯處
::-webkit-scrollbar-button 滾動條的軌道的兩端按鈕,允許通過點擊微調小方塊的位置。
::-webkit-scrollbar-track-piece 內層軌道,滾動條中間部分(除去)
::-webkit-resizer 兩個滾動條的交匯處上用於通過拖動調整元素大小的小控件
.body-div::-webkit-scrollbar {
width: 10px;
height: 10px;
}
.body-div::-webkit-scrollbar-track {
background: rgb(239, 239, 239);
border-radius: 2px;
}
.body-div::-webkit-scrollbar-thumb {
background: #bfbfbf;
border-radius: 10px;
}
.body-div::-webkit-scrollbar-thumb:hover {
background: #666;
}
.body-div::-webkit-scrollbar-corner {
background: #179a16;
}
12.常用正則表達式
//郵箱
function isAvailableEmail(sEmail) {
var reg=/^([\w+\.])+@\w+([.]\w+)+$/;
return reg.test(sEmail);
}
isAvailableEmail("[email protected]");
//手機
var phoneNum = '123';
var reg = /^1[3|4|5|6|7|8|9][0-9]{9}$/;
if (!reg.test(phoneNum )) {
this.alert('手機號格式錯誤');
}
//銀行卡
var pattern = /^([1-9]{1})(\d{14}|\d{18})$/;
if (!reg.test(pattern )) {
this.alert('銀行卡格式錯誤');
}
//銀行卡隱藏中間的幾位“****”
var str = "1234567890123456";
var reg = /^(\d{4})\d+(\d{4})$/;
str = str.replace(reg, "$1****$2");
//用戶名:
/^[a-zA-Z0-9_-]{4,15}$/ //只能是字母數字下劃線橫槓,長度4-15位
//密碼:
/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/ //至少含一個字母,數字 長度6-20位
11.JS中獲取輸入框的值
點擊獲取
<input type="text" placeholder="輸入留言" value="" id="msaInput">
<div onclick="msgComfirm()">確定</div>
function msgComfirm() {
var msaInput = document.getElementById("msaInput");
var inputValue = msaInput.value // 獲取輸入框的值
console.log(inputValue)
}
監聽獲取
<input type="text" placeholder="輸入留言" value="" oninput="OnInput (event)">
function OnInput(event) {
console.log(event.target.value);
}
10.JS中禁止HTML的滾動
document.documentElement.style.overflowY = 'hidden';
9.JS合併數組
1.
var a = [1,2,3];
var b = [4,5,6];
var c = a.concat(b);//c=[1,2,3,4,5,6]
2.
var a = [1,2,3];
var b = [4,5,6];
for(var i in b){
a.push(b[i]);
}
//a=[1,2,3,4,5,6]
8.點擊按鈕背景回彈動畫
<div class="btn">點擊按鈕回彈動畫</div>
.btn {
background: #999;
color: #fff;
width: 200px;
font-size: 20px;
padding: 20px 30px;
text-align: center;
border-radius: 10px;
position: relative;
overflow: hidden;
}
.btn::after {
content: "";
background: rgba(0, 0, 0, 0.3);
position: absolute;
width: 750px;
height: 750px;
left: calc(50% - 375px);
top: calc(50% - 375px);
opacity: 0;
margin: auto;
border-radius: 50%;
transform: scale(1);
transition: all 0.4s ease-in-out;
}
.btn:active:after {
transform: scale(0);
opacity: 1;
transition: 0s;
}
.btn:hover {
cursor: pointer;
}
7.border-radius實現半橢圓
<div class="test"></div>
.test{
border-radius: 150px 150px 0 0 / 100px 100px 0 0;
background: #00f;
height: 50px;
width: 150px;
}
效果圖:
6.transparent實現三角形
<div class="test"></div>
.test{
width: 0;
height: 0;
border: solid transparent;
border-width: 0px 50px 50px 50px ;
border-bottom-color: rgb(0, 0, 0);
}
效果圖:
5.實現border-bottom由中間向兩邊的漸變效果
background-clip: padding-box, border-box;
background-origin: padding-box, border-box;
background-image: linear-gradient(135deg, #fff, #fff), linear-gradient(to left, #fff, #666, #fff);
border-bottom: 2px transparent solid;
效果圖:
4.JS中動態修改backgroundSize和backgroundPosition
<div id="test"><div>
var testNumArr = [ '1','2','3']
//backgroundSize 百分比和px、rem等可以混用
window.document.getElementById('test').style.backgroundSize = '100%' + testNumArr[0] + "rem";
//當backgroundPosition的寬高大於div盒子的寬高是可以實現圖片剪切的效果,下面的負1rem就是減去頭部的1rem的高度
window.document.getElementById('test').style.backgroundPosition='0 -1rem';
3.去掉時間的冒號:和橫杆-
let time1 = 12:00;
let time2 = 9-18;
time1.replace(/\:/g, "");
time2.replace(/\-/g, "");
2.讓兩個容器的滾動條同步
用querySelector獲取容器的滾動條的dom對象,用addEventListenerjina監聽當前容器滾動了多少,再把值賦值給另外一個容器,scrollTop 頂部對齊,scrollLeft 左邊對齊。
//讓滾動條y軸同步
var a = document.querySelector('#leftID')
var b = document.querySelector('#rightID')
a.addEventListener('scroll', function() {
b.scrollTop = a.scrollTop;
})
b.addEventListener('scroll', function() {
a.scrollTop = b.scrollTop
});
//讓滾動條x軸同步
var a1 = document.querySelector('#topID')
var b1 = document.querySelector('#bottomID')
a1.addEventListener('scroll', function() {
b1.scrollLeft = a1.scrollLeft;
})
b1.addEventListener('scroll', function() {
a1.scrollLeft = b1.scrollLeft
})
1.div溢出部分可滾動查看並且不顯示滾動條
Element UI 的滾動條
第一種:
(.a是加了overflow屬性的類名)
.a::-webkit-scrollbar {
display: none
}
第二種(溢出截斷滾動條,不是迫不得已就別用):
(注意:div b 的寬度一定要比div a 的寬度寬16px以上,因爲滾動條的寬度大概是16px;而且內容一定要撐滿外層div;如果div裏是for循環顯示內容的,那麼這個div就要放到div b 的裏面。)
<div class="a">
<div class="b">
<div >123</div>
<div >123</div>
<div >123</div>
//<div for='arr'></div>
</div>
</div>
<style>
.a{
width:100px;
height:100px;
overflow:hidden;
}
.b{
width:120px;
height:100px;
overflow-y:scroll;
}
</style>
css樣式筆記:
文字:
文字超出隱藏:text-overflow: ellipsis;
文字超出切除:text-overflow: clip;
文字超出不換行:white-space: nowrap;
允許長文本換行:word-wrap: break-word;
單詞拆分換行:word-break: break-all;
(允許在單詞內換行)和word-break: keep-all;
(只能在半角空格或連字符處換行)
文字縮進:text-indent: 10px;
文字行高:line-height: 10px;
文字行寬:letter-spacing: 10px;
文字縮放:transform:scale(0.9,1.1)
(x:橫縮放,y:豎縮放)
文字超出兩行顯示省略號:
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;/*行數 */
-webkit-box-orient: vertical;