1、創(chuàng)建兩個html文件,一個test一個test2。
溫泉網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
2、打開test頁面,在里面創(chuàng)建一個div,并給其添加onmousedown與move方法。
3、打開后我們發(fā)現(xiàn)是一個棕綠的頁面。
4、定義兩個變量,startx為鼠標(biāo)按下的坐標(biāo),endx為鼠標(biāo)移動的坐標(biāo)。
5、實現(xiàn)鼠標(biāo)點(diǎn)擊執(zhí)行的down方法,在里面通過clientX獲得鼠標(biāo)按下坐標(biāo),并賦值給startx。
6、接著在實現(xiàn)鼠標(biāo)移動的move方法,獲得鼠標(biāo)移動的坐標(biāo),并通過startx與endx相減判斷是否向左邊滑動大于30的距離,是的話就切換到test2頁面。
7、現(xiàn)在我們打開test頁面,向左滑動會提示切換頁面(這個可以去除),確定后就切換到了test2頁面,向右滑動切換的方法同理。
使用了h5的touchmove等事件,以及用js動態(tài)改變css3的translate屬性來達(dá)到動畫效果:
!DOCTYPE html
html lang="en"
head
meta charset="UTF-8"
meta name="viewport" id="viewport" content="width=device-width, initial-scale=1"
titlehtml5向左滑動刪除特效/title
style
* {
padding: 0;
margin: 0;
list-style: none;
}
header {
background: #f7483b;
border-bottom: 1px solid #ccc
}
header h2 {
text-align: center;
line-height: 54px;
font-size: 16px;
color: #fff
}
.list-ul {
overflow: hidden
}
.list-li {
line-height: 60px;
border-bottom: 1px solid #fcfcfc;
position: relative;
padding: 0 12px;
color: #666;
background: #f2f2f2;
-webkit-transform: translateX(0px);
}
.btn {
position: absolute;
top: 0;
right: -80px;
text-align: center;
background: #ffcb20;
color: #fff;
width: 80px
}
/style
script
/*
* 描述:html5蘋果手機(jī)向左滑動刪除特效
*/
window.addEventListener('load', function() {
var initX; //觸摸位置
var moveX; //滑動時的位置
var X = 0; //移動距離
var objX = 0; //目標(biāo)對象位置
window.addEventListener('touchstart', function(event) {
event.preventDefault();
var obj = event.target.parentNode;
if (obj.className == "list-li") {
initX = event.targetTouches[0].pageX;
objX = (obj.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1;
}
if (objX == 0) {
window.addEventListener('touchmove', function(event) {
event.preventDefault();
var obj = event.target.parentNode;
if (obj.className == "list-li") {
moveX = event.targetTouches[0].pageX;
X = moveX - initX;
if (X = 0) {
obj.style.WebkitTransform = "translateX(" + 0 + "px)";
} else if (X 0) {
var l = Math.abs(X);
obj.style.WebkitTransform = "translateX(" + -l + "px)";
if (l 80) {
l = 80;
obj.style.WebkitTransform = "translateX(" + -l + "px)";
}
}
}
});
} else if (objX 0) {
window.addEventListener('touchmove', function(event) {
event.preventDefault();
var obj = event.target.parentNode;
if (obj.className == "list-li") {
moveX = event.targetTouches[0].pageX;
X = moveX - initX;
if (X = 0) {
var r = -80 + Math.abs(X);
obj.style.WebkitTransform = "translateX(" + r + "px)";
if (r 0) {
r = 0;
obj.style.WebkitTransform = "translateX(" + r + "px)";
}
} else { //向左滑動
obj.style.WebkitTransform = "translateX(" + -80 + "px)";
}
}
});
}
})
window.addEventListener('touchend', function(event) {
event.preventDefault();
var obj = event.target.parentNode;
if (obj.className == "list-li") {
objX = (obj.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1;
if (objX -40) {
obj.style.WebkitTransform = "translateX(" + 0 + "px)";
objX = 0;
} else {
obj.style.WebkitTransform = "translateX(" + -80 + "px)";
objX = -80;
}
}
})
})
/script
/head
body
header
h2消息列表/h2
/header
section class="list"
ul class="list-ul"
li id="li" class="list-li"
div class="con"
你的快遞到了,請到樓下簽收
/div
div class="btn"刪除/div
/li
li class="list-li"
div class="con"
哇,你在干嘛,快點(diǎn)來啊就等你了
/div
div class="btn"刪除/div
/li
/ul
/section
/body
/html
一、 HTML5新增的標(biāo)簽
(1)header nav main? footer? section article hgroup? figure figcaption? aside?
video? audio canvas
? ? ? ? ? ? (2)如何讓新標(biāo)簽兼容低版本瀏覽器:? html5shiv.js
二、 HTML5新增的表單控件
一、表單控件的新屬性
? ? ? ? input type="text"? placeholder=""? required? autofocus? pattern="abc"
二、新增的表單控件
(1)input type="email"
(2)input type="url"
? (3)數(shù)字控件:? type="number"
? (4)? 滑動組件:? type="range"
? (5)? 拾色器:? ? ? type="color"
? (6)? 日期控件:? ? type="date"
三、本地存儲
1、 三種本地存儲 :? cookie webStorage(localStorage? sessionStorage)
2、localStorage的API
? (1)寫入:? localStorage.setItem(鍵,值);? //值只能是字符串
? localStorage.user = "123" localStorage["user"] = "123"
? (2)讀取? var user = localStorage.getItem("user")
? ? ? ? ? ? ? var user = localStorage.user;
? ? (3)刪除:? localStorage.removeItem("user")? ? localStorage.clear()
? ? (4)修改:? localStorage.setItem("user","890")
3、sessionStorage的API
sessionStorage.setItem(鍵,值);
? ? sessionStorage.getItem(鍵);
? ? sessionStorage.removeItem(鍵);
sessionStorage.clear();
**********重點(diǎn)**********
? 4、cookie webStorage(localStorage? sessionStorage)三者的區(qū)別
四、離線存儲
(1) *.manifest? (*.appcache)?
? ? ? index.html? html manifest="*.manifest"
(2) 理解離線存儲的更新方式
五、移動端的布局思路:
1、設(shè)備像素比(倍率)? 邏輯像素尺寸 (360px? 320px? 375px? 414px)
? ? ? ? window.devicePixelRatio
? ? 2、 meta name="viewport" content="width=device-width,maximum-
scale=1.0,minimum-scale=1.0,initial-scale=1.0,user-scalable=no""
3、使用rem單位
六、地理定位
if (navigator.geolocation){?
? ? ? ? navigator.geolocation.getCurrentPosition(success,error,{
? ? ? ? ? ? timeout: 5000
? ? ? ? });
? ? ? ? function success(pos){
? ? ? ? ? ? 緯度:? pos.coords.latitute
? ? ? ? ? ? 經(jīng)度:? pos.coords.longtitude
? ? ? ? }
? ? }
? ? navigator.geolocation.watchPosition(success);
七、地理定位和百度地圖API的結(jié)合
八、視頻,音頻? video autoplay="autoplay" controls="controls" loop="loop" poster=""
preload="preload"? audio
九、移動端事件:?
(1) ontouchstart? ontouchmove? ontouchend
(2) 如何判斷是否為移動端:? if ("ontouchstart" in document){}
? ? (3) 移動端事件的事件對象及常用屬性
? ? ? e.touches[0].clientX? e.touches[0].clientY? e.touches[0].target
? (4) 移動端常見問題及解決方案:
a、 click事件 300ms的延遲:? 1zepto的tap事件? (2) fastclick.js
b、 zepto的tap事件有點(diǎn)透問題 :? (1) fastclick.js
? ? (5) zepto的touch模塊:? tap? singleTap? doubleTap? longTap?
? ? ? ? ? ? swipeLeft? swipeRight? swipeUp? swipeDown
十、swiper.js的使用? (參考官網(wǎng))
十一、 canvas
(1)? canvas width="600" id="can"/canvas? ? 300*150
? (2)? var can = document.getElementById("can");
? var cxt = can.getContext("2d");
cxt.beginPath();
cxt.moveTo(100,200);
cxt.lineTo(200,400);
? ? ? ? ? cxt.strokeStyle = '#f00';
cxt.stroke();
? ? ? ? ? ? ? cxt.clearRect(0,0,200,300);
? ? ? ? ? ? ? context.globalCompositeOperation="destination-out";? (了解)
使用Ionic這種框架偉大的地方在于用戶界面元素默認(rèn)準(zhǔn)備好了,意味著你可以設(shè)計更好的app而不需要很強(qiáng)的用戶體檢設(shè)計背景,而且讓你可以更容易實現(xiàn)這些模式。
這篇教程將展示如何使用Ionic2添加一個簡單的刪除按鈕到列表,當(dāng)用戶滑動列表項到左邊的時候。這是一個處理刪除列表數(shù)據(jù)時候常用的模式。本教程將涵蓋創(chuàng)建這個滑動刪除按鈕所需要的一切。
刪除例子
1.創(chuàng)建Ionic2應(yīng)用
通過以下命令行語句創(chuàng)建新的Ionic2應(yīng)用:
ionic start ionic2-delete blank --v2
這里我使用了–v2標(biāo)志位,為了告訴Ionic命令行我們創(chuàng)建的是Ionic2項目。
2.準(zhǔn)備列表數(shù)據(jù)
我們需要一些維護(hù)數(shù)據(jù),因此要建立一些試驗數(shù)據(jù)。創(chuàng)建我們項目的blank模版默認(rèn)建立了一個Home組件,這個教程我們就在此基礎(chǔ)上修改。
既然Ionic2還很新,我將這些步驟盡量闡述詳細(xì),下面我們看看app/home/home.js文件:
import {Page} from 'ionic/ionic'
倫理片
@Page({
templateUrl: 'app/home/home.html',
})
export class HomePage {
constructor() {}
}
constructor 方法在組件創(chuàng)建是執(zhí)行,因此我們在這里準(zhǔn)備試驗數(shù)據(jù)。你可能已經(jīng)注意到我們已經(jīng)給這個組件定義了模版,隨后將展示如何在模版中使用在這里添加的數(shù)據(jù)。
home.js 文件修改如下:
import {Page} from 'ionic/ionic'
@Page({
templateUrl: 'app/home/home.html',
})
export class HomePage {
constructor() {
this.items = [
{title: 'item1'},
{title: 'item2'},
{title: 'item3'},
{title: 'item4'},
{title: 'item5'},
{title: 'item6'}
];
}
}
現(xiàn)在我們有一些數(shù)據(jù)可以刪除了。
3.修改主頁(HOME)的模版
接下來我們編輯home.html來建立模版?,F(xiàn)在的模版是包含一些創(chuàng)建ion-card的代碼,而我們要用ion-list來代替:
修改 home.html如下:
ion-navbar *navbar
ion-title
Home
/ion-title
/ion-navbar
ion-content
ion-list
ion-item
I'm just a plain old item in a list...
/ion-item
/ion-list
/ion-content
這只是創(chuàng)建了只有一個單項的列表,接著我們將添加滑動元素。
繼續(xù)修改home.html如下:
ion-navbar *navbar
ion-title
Home
/ion-title
/ion-navbar
ion-content
ion-list
ion-item-sliding
ion-item
Swipe me to the left
/ion-item
ion-item-options
button danger (click)="removeItem()"icon trash/icon Delete/button
/ion-item-options
/ion-item-sliding
/ion-list
/ion-content
通過上下對比,你應(yīng)該看到:我們用ion-item-sliding替換了ion-item 。這允許我們創(chuàng)建一個ion-item-options 部件,當(dāng)用戶滑動列表元素時,它將顯示出來。
這段代碼還創(chuàng)建了一個刪除按鈕,當(dāng)ion-item-options部件顯示出來時,可以點(diǎn)擊按鈕,這時會觸發(fā)類中定義的removeItem (暫無,接下來添加)。另外,我們不止是一個單項,我們要為我們創(chuàng)建的數(shù)組的每一個數(shù)據(jù)創(chuàng)建滑動項,這里我使用ng-for。
還是修改home.html如下:
ion-navbar *navbar
ion-title
Home
/ion-title
/ion-navbar
ion-content
ion-list
ion-item-sliding *ng-for="#item of items"
ion-item
{{item.title}}
/ion-item
ion-item-options
button danger (click)="removeItem(item)"icon trash/icon Delete/button
/ion-item-options
/ion-item-sliding
/ion-list
/ion-content
現(xiàn)在我們循環(huán)在類中定義的items數(shù)組的每個item項,然后為每個項創(chuàng)建一個 ion-item-sliding指令。注意我們使用的是#item而不是item。這將創(chuàng)建一個本地引用到迭代獲得的item,這讓我們可以使用 { {item.title} } 輸出標(biāo)題,它還允許我們傳遞item的引用到我們的 removeItem 函數(shù)。
我們現(xiàn)在有了一個列表包含所有數(shù)據(jù),用戶可以滑動并顯示出一個delete按鈕?,F(xiàn)在剩下的是當(dāng)用戶點(diǎn)擊時做點(diǎn)什么事。因此我們設(shè)置一個簡單監(jiān)聽以便調(diào)用方法從我們先前創(chuàng)建的測試數(shù)據(jù)中刪除一項。
4.創(chuàng)建方法刪除數(shù)據(jù)
現(xiàn)在我們?nèi)サ?home.js 文件編寫方法處理數(shù)據(jù)刪除。當(dāng)前但刪除按鈕被點(diǎn)擊時傳送一個數(shù)據(jù)項給 removeItem。類似的,你可以非常容易的實現(xiàn)例如刪除、編輯、分享、播放動畫等你需要的東西,不僅是刪除。
修改 home.js 如下:
import {Page} from 'ionic/ionic'
@Page({
templateUrl: 'app/home/home.html',
})
export class HomePage {
constructor() {
this.items = [
{title: 'item1'},
{title: 'item2'},
{title: 'item3'},
{title: 'item4'},
{title: 'item5'},
{title: 'item6'}
];
}
removeItem(item){
for(i = 0; i this.items.length; i++) {
if(this.items[i] == item){
this.items.splice(i, 1);
}
}
}
}
現(xiàn)在你向左側(cè)滑動列表項,然后點(diǎn)擊刪除按鈕,它就會從列表中刪除。就像下面這樣:
刪除例子
5.添加一個編輯按鈕
這里將不會將Edit按鈕的全過程走一遍,但是你可以輕易擴(kuò)展活動項并添加編輯按鈕,如下所示:
ion-item-options
button primaryEdit/button
button danger (click)="removeItem(item)"icon trash/icon Delete/button
/ion-item-options
現(xiàn)在滑動時你有兩個按鈕了,看下面:
添加編輯按鈕
然后你可以編寫Edit按鈕的點(diǎn)擊事件了,具體取決于你的需求。
?script?type="text/javascript"
function?getData()?{
var?listNo?=?document.getElementById('listNo').value;
var?batchNum?=?document.getElementById('batchNum').value;
var?classNo?=?document.getElementById('classNo').value;
var?exp?=?document.getElementById('exp').value;
var?number?=?document.getElementById('number').value;
var?per?=?[
{?listNo1:?listNo,?batchNum1:?batchNum,?classNo1:?classNo,?exp1:?exp,?number1:?number?},
];
var?tbody?=?document.getElementById('tbMain');
for?(var?i?=?0;?i??per.length;?i++)?{?//遍歷一下json數(shù)據(jù)
var?trow?=?getDataRow(per[i]);?//定義一個方法,返回tr數(shù)據(jù)
tbody.appendChild(trow);
}
}
function?getDataRow(h)?{
var?row?=?document.createElement('tr');?//創(chuàng)建行
var?listNoCell?=?document.createElement('td');?//創(chuàng)建第一列l(wèi)istNo
listNoCell.innerHTML?=?h.listNo1;?//填充數(shù)據(jù)
row.appendChild(listNoCell);?//加入行?,下面類似
var?batchNumCell?=?document.createElement('td');//創(chuàng)建第二列batchNum
batchNumCell.innerHTML?=?h.batchNum1;
row.appendChild(batchNumCell);
var?classNoCell?=?document.createElement('td');//創(chuàng)建第三列classNo
classNoCell.innerHTML?=?h.classNo1;
row.appendChild(classNoCell);
var?expCell?=?document.createElement('td');//創(chuàng)建第四列exp
expCell.innerHTML?=?h.exp1;
row.appendChild(expCell);
var?numberCell?=?document.createElement('td');//創(chuàng)建第五列number
numberCell.innerHTML?=?h.number1;
row.appendChild(numberCell);
//到這里,json中的數(shù)據(jù)已經(jīng)添加到表格中,下面為每行末尾添加刪除按鈕
var?delCell?=?document.createElement('td');//創(chuàng)建第六列,操作列
row.appendChild(delCell);
var?btnDel?=?document.createElement('input');?//創(chuàng)建一個input控件
btnDel.setAttribute('type',?'button');?//type="button"
btnDel.setAttribute('value',?'刪除');
btnDel.setAttribute('onclick',?'delete1(this)');
delCell.appendChild(btnDel);?//把刪除按鈕加入td
//刪除操作
return?row;?//返回tr數(shù)據(jù)
}
function?delete1(obj)?{
if?(confirm("確定刪除這一行嘛?"))?{
//找到按鈕所在行的節(jié)點(diǎn),然后刪掉這一行
obj.parentNode.parentNode.remove()
//?obj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);
//var?curRow?=?obj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.rowIndex;
//?tbMain.deleteRow(curRow);
//btnDel?-?td?-?tr?-?tbody?-?刪除(tr)
//刷新網(wǎng)頁還原。實際操作中,還要刪除數(shù)據(jù)庫中數(shù)據(jù),實現(xiàn)真正刪除
}
};
/script
?請采納
網(wǎng)站標(biāo)題:html5滑動刪除,html5清除浮動
文章出自:http://m.rwnh.cn/article4/phpdie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、營銷型網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、全網(wǎng)營銷推廣、網(wǎng)站設(shè)計、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)