一般相機(jī)拍的照片,如果是原片的話,圖片里會(huì)包含快門(mén)光圈ISO等拍攝信息。 如果用別的軟件編輯過(guò)好像就丟失了。不過(guò)這些信息太容易偽造。根據(jù)這個(gè)判斷也沒(méi)啥可信程度。
var start = 0;
var end = 100;
var duration = 1500;
var startTime = Date.now();
function animate() {
var delta = Math.min( 1500, Date.now() - startTime );
var value = ( delta / duration ) * ( end - start ) + start;
console.log( value );
if ( delta < 1500 ) {
requestAnimationFrame( animate );
}
}
animate();css3 旋轉(zhuǎn):http://www.w3school.com.cn/cs...
加
css3 動(dòng)畫(huà):http://www.w3school.com.cn/cs...
注意設(shè)置旋轉(zhuǎn)中心:transform-origin
題主的問(wèn)題還是有點(diǎn)模糊的,希望能詳細(xì)一些。下面我談?wù)勛约旱睦斫獍伞?/p>
不知道我的理解對(duì)不對(duì):
但是呢,要是問(wèn)的是項(xiàng)目中抽離樣式模塊的話,在webpack中可以使用:
extract-text-webpack-plugin插件抽離。
你在componentWillReceiveProps和componenetDidMount中都調(diào)用了init,卻沒(méi)有在init開(kāi)頭清除定時(shí)器。因此在url === nowurl的情況下,會(huì)再次創(chuàng)建定時(shí)器,而第一次創(chuàng)建的定時(shí)器(來(lái)自componentDidMount)沒(méi)有被清除,因此造成了兩個(gè)定時(shí)器同時(shí)運(yùn)行的情況
750的設(shè)計(jì)稿引入JS
http://static.leiting.com/lib...
640的設(shè)計(jì)稿引入JS
http://static.leiting.com/lib...
使用移動(dòng)端文檔頭
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no">
布局就正常切圖
nPX/100即可
例如:10px=.1rem
至于為啥是/100
document.documentElement.clientWidth/7.5
OR
document.documentElement.clientWidth/6.4
使用REM主要是 REM是根據(jù)body的font-size來(lái)計(jì)算 上面的算法就是計(jì)算 body的font-size,然后賦值給body
document.documentElement.style.fontSize=document.documentElement.clientWidth/7.5+'px'
touch事件可以不用e.preventDefault();阻止默認(rèn)行為,試試用css的touch-action,touchmove時(shí)添加
document.documentElement.style.touchAction = 'none';touchend時(shí)document.documentElement.style.touchAction = 'auto';
這樣可以讓你的組件更干凈,把這種url請(qǐng)求和表現(xiàn)分開(kāi),利于復(fù)用以及單元測(cè)試
小程序大概只能使用HTTP連接和WebSocket連接,內(nèi)網(wǎng)不內(nèi)網(wǎng)倒是無(wú)所謂,但是要是HTTPS的
很尷尬,我覺(jué)得吧...你好像地址打錯(cuò)了:action="http//localhost:9090/upload"
應(yīng)該是:action="http://localhost:9090/upload"
少了引號(hào)。。或者你用相對(duì)地址好點(diǎn)action="/upload"
移動(dòng)端沒(méi)有鍵盤(pán)事件,可以改成@touchstart
個(gè)人的解決方案:IOS自動(dòng)頂(但下部多余很多空白,你沒(méi)遇到,所以略)
安卓:focus的時(shí)候,給頁(yè)面外層box綁定事件(addEvent...),box設(shè)置定位,整體上移Yrem(上移尺寸最好是按input框距頂部距離,rem基本能適配正常手機(jī),但部分手機(jī)寬高不成比例)
同理,第三方登錄也是focus時(shí)定位,然后設(shè)置距離頂部的距離
blur的時(shí)候,remove剛剛設(shè)置的所有屬性
8s |------------|setInterval
5s |------|setTimeout
你寫(xiě)出來(lái)的效果應(yīng)該是5s元素消失,3s后元素出現(xiàn)。其實(shí)你只需要把setInterval的間隔時(shí)間改為13000即可。
lodash的_.get(obj,path)
如果不存在路徑會(huì)返還undefined而不是報(bào)錯(cuò)
使用繼承,所有的界面都繼承一個(gè)BaseComponent,這個(gè)BaseComponent的componentWillUnmount中重置所有的狀態(tài)。
犀牛書(shū)里的確有很多錯(cuò)誤,也有可能是因?yàn)镋S標(biāo)準(zhǔn)以及執(zhí)行環(huán)境等不一樣導(dǎo)致的。
實(shí)踐得真知,建議手動(dòng)執(zhí)行
var a1 = [,,]
var a2 = new Array(3)
var a3 = [1,,3]
console.log(0 in a1)
console.log(0 in a2)
console.log(0 in a3)
console.log(1 in a3)
得到結(jié)果:
false
false
true
false
所以只要是省略了該位置的元素,用 in 檢測(cè)都是 false,同時(shí)用 for in 也遍歷不到。
console.log("a1:")
for (var a in a1){
console.log(a)
}
console.log("a2:")
for (var a in a2){
console.log(a)
}
console.log("a3:")
for (var a in a3){
console.log(a)
}
得到結(jié)果:
a1:
a2:
a3:
0
2剝離出數(shù)字很簡(jiǎn)單,循環(huán)加split就可以了
動(dòng)畫(huà)效果可以通過(guò)控制類名來(lái)實(shí)現(xiàn)
給你寫(xiě)個(gè)demo
#lists li{
opacity: 0;
}
#lists .list{
opacity: 1;
transition: opacity 0.5s linear;
}
#lists .delete{
animation: delete 0.5s ease-in-out forwards;
}
#lists .hide{
display: none;
}
@keyframes delete
{
0% {color: red; text-decoration:line-through; opacity:1;}
100% {opacity:0;}
}
let arr = ["a,92","b,0","c,0","d,43","e,0","f,80","g,0","h,50","j,20","k,5"]
const lists = document.getElementsByTagName('body')[0].appendChild(document.createElement("ul"))
lists.setAttribute("id", "lists")
const num = 8 // 限制顯示的條數(shù)
const second = 0.5 // 每條數(shù)據(jù)的動(dòng)畫(huà)時(shí)長(zhǎng)
arr.map((v, i) => {
let li = document.createElement("li")
li.innerHTML = v.split(',')[1]
li.style.transitionDelay = i * second + 's'
lists.appendChild(li)
setTimeout(() => {
li.classList.add('list')
}, 0)
if(i > (num - 1)) {
let deleteLi = document.getElementById('lists').getElementsByTagName('li')[i - num]
deleteLi.classList.add("delete")
let delay = [i - 1] * second
deleteLi.style.animationDelay = delay + 's'
setTimeout(() => {
deleteLi.classList.add("hide")
}, (delay + second) * 1000)
}
})發(fā)現(xiàn)canvas其實(shí)可以設(shè)置z-index
<canvas id="mainCanvas" style="position:relative;z-index:1088;background: rgba(0,0,0,0.5);" > </canvas>
不算答案的答案
按照你的描述,我覺(jué)得問(wèn)題不是出在前端能否做到,
而是在于各個(gè)移動(dòng)端瀏覽器廠商對(duì)跨域限制的處理不是一致的,
協(xié)議是死的,人是活的。人家就是不遵守,你也沒(méi)辦法。
這個(gè)問(wèn)題光靠前端基本搞不定,所以在后端做一層跨域代理我覺(jué)得是唯一的解決辦法
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。