Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 日本高清一区二区三区不卡免费,亚洲美女性视频,国产成人精品免费视频大全可播放的

          整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線(xiàn):

          移動(dòng)HTML5模擬觸摸屏長(zhǎng)按事件

          近接了個(gè)需求,要求長(zhǎng)按某個(gè)標(biāo)簽顯示刪除一個(gè)懸浮的刪除按鈕。這個(gè)需求其實(shí)在app上很常見(jiàn),但是在移動(dòng)端h5中,我們沒(méi)有長(zhǎng)按的事件,所以就需要自己模擬這個(gè)事件了。

          大概效果如下:

          設(shè)計(jì)思路:

          • 放棄click事件,通過(guò)判斷按的時(shí)長(zhǎng)來(lái)決定是單擊還是長(zhǎng)按
          • 使用touchstart和touchend事件
          • 在touchstart中開(kāi)啟一個(gè)定時(shí)器,比如在600ms后顯示一個(gè)長(zhǎng)按菜單
          • 在touchend中清除這個(gè)定時(shí)器,這樣如果按下的時(shí)間超過(guò)600ms,那么長(zhǎng)按菜單已經(jīng)顯示出來(lái)了,清除定時(shí)器不會(huì)有任何影響;如果按下的時(shí)間小于600ms,那么touchstart中的長(zhǎng)按菜單還沒(méi)來(lái)得及顯示出來(lái),就被清除了。

          由此我們可以實(shí)現(xiàn)模擬的長(zhǎng)按事件了。

          上代碼

          請(qǐng)把重點(diǎn)放在JS上,這里貼出來(lái)完整的代碼是為了方便大家看個(gè)仔細(xì),代碼可以拷貝直接看效果

          css中大部分只是做了樣式的美化,還有一開(kāi)始讓刪除按鈕隱藏起來(lái)

          HTML:

          <!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>
           <link rel="stylesheet" type="text/css" href="./longpress.css" />
          </head>
          <body>
           <div class="container">
           <div class="label" id="label">長(zhǎng)按我</div>
           <div class="delete_btn">刪除</div>
           </div>
           <script src="./longpress.js"></script>
          </body>
          </html>
          

          JS

          let timer = null
          let startTime = ''
          let endTime = ''
          const label = document.querySelector('.label')
          const deleteBtn = document.querySelector('.delete_btn')
          label.addEventListener('touchstart', function () {
           startTime = +new Date()
           timer = setTimeout(function () {
           deleteBtn.style.display = 'block'
           }, 700)
          })
          label.addEventListener('touchend', function () {
           endTime = +new Date()
           clearTimeout(timer)
           if (endTime - startTime < 700) {
           // 處理點(diǎn)擊事件
           label.classList.add('selected')
           }
          })
          

          CSS

          .container {
           position: relative;
           display: inline-block;
           margin-top: 50px;
          }
          .label {
           display: inline-block;
           box-sizing: border-box;
           width: 105px;
           height: 32px;
           line-height: 32px;
           background-color: #F2F2F2;
           color: #5F5F5F;
           text-align: center;
           border-radius: 3px;
           font-size: 14px;
          }
          .label.selected {
           background-color: #4180cc;
           color: white;
          }
          .delete_btn {
           display: none;
           position: absolute;
           top: -8px;
           left: 50%;
           transform: translateX(-50%) translateY(-100%);
           color: white;
           padding: 10px 16px;
           background-color: rgba(0, 0, 0, .7);
           border-radius: 6px;
           line-height: 1;
           white-space: nowrap;
           font-size: 12px;
          }
          .delete_btn::after {
           content: '';
           width: 0;
           height: 0;
           border-width: 5px;
           border-style: solid;
           border-color: rgba(0, 0, 0, .7) transparent transparent transparent;
           position: absolute;
           bottom: -9px;
           left: 50%;
           transform: translateX(-50%);
          }
          

          ps: touchstart和touchend只有在移動(dòng)端設(shè)備上才有用,如果要看代碼示例的話(huà)請(qǐng):

          • 用chrome
          • F12打開(kāi)調(diào)時(shí)窗
          • 切換到模擬移動(dòng)設(shè)備

          即點(diǎn)擊如下圖:

          天給大家推薦的是PhET?免費(fèi)在線(xiàn)物理、化學(xué)、生物、地理及數(shù)學(xué)交互性仿真程序平臺(tái),這是來(lái)自科羅拉多大學(xué)的物理教育技術(shù)項(xiàng)目,自2009年誕生至今已經(jīng)涉及到物理、化學(xué)、生物、地理和數(shù)學(xué)等諸多學(xué)科。

          PhET?仿真演示平臺(tái)

          英文原版地址

          https://phet.colorado.edu/

          中文版地址

          https://phet.colorado.edu/zh_CN/

          這是一個(gè)在線(xiàn)平臺(tái),而且還支持HTMl5,也就是說(shuō)好多仿真程序可以使用移動(dòng)設(shè)備來(lái)訪(fǎng)問(wèn)。例如下面這兩個(gè)案例。

          PH值仿真演示地址 https://phet.colorado.edu/sims/html/ph-scale/latest/ph-scale_zh_CN.html

          三角函數(shù)之旅訪(fǎng)問(wèn)地址 https://phet.colorado.edu/sims/html/trig-tour/latest/trig-tour_zh_CN.html

          長(zhǎng)按網(wǎng)址選擇復(fù)制打開(kāi)訪(fǎng)問(wèn),或長(zhǎng)按二維碼識(shí)別都能訪(fǎng)問(wèn)

          PhET?擁有豐富的仿真演示程序,在主頁(yè)的左側(cè)有各種分類(lèi)。包括按學(xué)科:物理、生物、化學(xué)、地球科學(xué)、數(shù)學(xué)等;按學(xué)段:小學(xué)、中學(xué)、高中和大學(xué)等;還有按設(shè)備分類(lèi):iPad等平板、Chromebook。部分仿真程序已翻譯成中文,有些新的可能還是英文,不過(guò)也不影響教學(xué)演示用。

          再來(lái)看幾個(gè)案例,為了觀(guān)看方便,這里直接錄制成了GIF動(dòng)圖。要體驗(yàn)交互效果請(qǐng)?jiān)L問(wèn)PhET平臺(tái)相應(yīng)程序。

          物理-胡克定律

          生物-彩色視覺(jué)

          化學(xué)-密度

          地理-太陽(yáng)系系統(tǒng)

          數(shù)學(xué)-二項(xiàng)分布彈珠臺(tái)機(jī)率

          你還想了解怎么開(kāi)發(fā)的?這里大概介紹下。從平臺(tái)上提供的仿真演示程序可以看出主要使用了三大類(lèi)技術(shù):JAVA、FLASH及HTML5,使用不同技術(shù)開(kāi)發(fā)的仿真程序都會(huì)有相應(yīng)的標(biāo)示,如下圖。

          PhET主要采用①JAVA、②FLASH、③HTML5三種技術(shù)開(kāi)發(fā)仿真演示程序

          PhET平臺(tái)上的仿真程序除了直接訪(fǎng)問(wèn)使用,還允許下載嵌入到其它網(wǎng)站來(lái)使用。嵌入就有點(diǎn)類(lèi)似于優(yōu)酷視頻,底部會(huì)提供一段嵌入代碼(如下圖),只要將這段代碼粘貼到博客、網(wǎng)站頁(yè)面相應(yīng)的地方,就可以實(shí)現(xiàn)程序“遷移”了。最關(guān)鍵的是HTML5演示程序也支持下載,下載后就得到一個(gè)HTML文件,特別方便,把這個(gè)HTML文件通過(guò)QQ、微信發(fā)給其它人或者上傳到自己網(wǎng)站上就能輕松運(yùn)行仿真程序了。

          想想當(dāng)年上學(xué)的時(shí)候,課堂上如果老師用這些模擬仿真程序來(lái)演示各種原理和現(xiàn)象,那該多直觀(guān)啊。再也不用僅靠老師的文字描述然后絞盡腦汁去憑空想象了。

          另外如果這些交互式仿真程序能夠在交互環(huán)境下使用,例如交互式電子白板、觸摸式一體機(jī)、移動(dòng)設(shè)備等,會(huì)有更好的課堂效果。學(xué)生能親自動(dòng)手去探索一些學(xué)科原理和知識(shí)。

          習(xí)是一件非常充實(shí)的過(guò)程,特別是把自己的樂(lè)趣變成工作的時(shí)候,很多朋友就喜歡學(xué)習(xí)web前端,所以學(xué)習(xí)前端,也希望從事前端的工作,但是因?yàn)槿鄙賹?shí)戰(zhàn)經(jīng)驗(yàn),所以很多都是卡在面試這關(guān)上,下面小猿圈總結(jié)了web前端中HTML5+CSS3面試題。

          一、移動(dòng)端(Android IOS)怎么做好用戶(hù)體驗(yàn)?

          1.清晰的視覺(jué)縱線(xiàn)

          2.信息的分組、極致的減法

          3.利用選擇代替輸入

          4.標(biāo)簽及文字的排布方式

          5.依靠明文確認(rèn)密碼

          6.合理的鍵盤(pán)利用

          二、什么是Retina 顯示屏,帶來(lái)了什么問(wèn)題?

          retina:一種具備超高像素密度的液晶屏,同樣大小的屏幕上顯示的像素點(diǎn)由1個(gè)變?yōu)槎鄠€(gè),如在同樣帶下的屏幕上,蘋(píng)果設(shè)備的retina顯示屏中,像素點(diǎn)1個(gè)變?yōu)?個(gè)

          在高清顯示屏中的位圖被放大,圖片會(huì)變得模糊,因此移動(dòng)端的視覺(jué)稿通常會(huì)設(shè)計(jì)為傳統(tǒng)PC的2倍

          那么,前端的應(yīng)對(duì)方案是:

          設(shè)計(jì)稿切出來(lái)的圖片長(zhǎng)寬保證為偶數(shù),并使用backgroud-size把圖片縮小為原來(lái)的1/2

          例如圖片寬高為:200px*200px,那么寫(xiě)法如下

          .css{width:100px;height:100px;background-size:100px 100px;}

          其它元素的取值為原來(lái)的1/2,例如視覺(jué)稿40px的字體,使用樣式的寫(xiě)法為20px

          .css{font-size:20px}

          三、ios系統(tǒng)中元素被觸摸時(shí)產(chǎn)生的半透明灰色遮罩怎么去掉

          ios用戶(hù)點(diǎn)擊一個(gè)鏈接,會(huì)出現(xiàn)一個(gè)半透明灰色遮罩, 如果想要禁用,可設(shè)置-webkit-tap-highlight-color的alpha值為0,也就是屬性值的最后一位設(shè)置為0就可以去除半透明灰色遮罩

          a,button,input,textarea{-webkit-tap-highlight-color: rgba(0,0,0,0;)}

          四、部分android系統(tǒng)中元素被點(diǎn)擊時(shí)產(chǎn)生的邊框怎么去掉

          android用戶(hù)點(diǎn)擊一個(gè)鏈接,會(huì)出現(xiàn)一個(gè)邊框或者半透明灰色遮罩, 不同生產(chǎn)商定義出來(lái)額效果不一樣,可設(shè)置-webkit-tap-highlight-color的alpha值為0去除部分機(jī)器自帶的效果

          a,button,input,textarea{

          -webkit-tap-highlight-color: rgba(0,0,0,0;)

          -webkit-user-modify:read-write-plaintext-only;

          }

          -webkit-user-modify有個(gè)副作用,就是輸入法不再能夠輸入多個(gè)字符

          另外,有些機(jī)型去除不了,如小米2,對(duì)于按鈕類(lèi)還有個(gè)辦法,不使用a或者input標(biāo)簽,直接用div標(biāo)簽。

          五、webkit表單元素的默認(rèn)外觀(guān)怎么重置

          通用:.css{-webkit-appearance:none;}

          偽元素改變number類(lèi)型input框的默認(rèn)樣式

          input[type=number]::-webkit-textfield-decoration-container {

          background-color: transparent;

          }

          input[type=number]::-webkit-inner-spin-button {

          -webkit-appearance: none;

          }

          input[type=number]::-webkit-outer-spin-button {

          -webkit-appearance: none;

          }

          六、webkit表單輸入框placeholder的顏色值能改變么?

          input::-webkit-input-placeholder{color:#AAAAAA;}

          input:focus::-webkit-input-placeholder{color:#EEEEEE;}

          七、webkit表單輸入框placeholder的文字能換行么?

          ios可以,android不行

          在textarea標(biāo)簽下都可以換行

          八、禁止ios 長(zhǎng)按時(shí)不觸發(fā)系統(tǒng)的菜單,禁止ios&android長(zhǎng)按時(shí)下載圖片

          .css{-webkit-touch-callout: none}

          九、禁止ios和android用戶(hù)選中文字

          .css{-webkit-user-select:none}

          十、打電話(huà)發(fā)短信寫(xiě)郵件怎么實(shí)現(xiàn)

          打電話(huà):<a href="tel:0755-10086">打電話(huà)給:0755-10086</a>

          發(fā)短信,winphone系統(tǒng)無(wú)效<a href="sms:10086">發(fā)短信給: 10086</a>

          寫(xiě)郵件:<a href=“mailto:peun@foxmail.com">peun@foxmail.com</a>

          十一、模擬按鈕hover效果

          移動(dòng)端觸摸按鈕的效果,可明示用戶(hù)有些事情正要發(fā)生,是一個(gè)比較好體驗(yàn),但是移動(dòng)設(shè)備中并沒(méi)有鼠標(biāo)指針,使用css的hover并不能滿(mǎn)足我們的需求,還好國(guó)外有個(gè)激活移動(dòng)端css的active效果。

          1. 直接在body上添加ontouchstart,同樣可激活移動(dòng)端css的active效果,比較推薦這種方式(兼容性ios5+、部分android 4+、winphone 8)。

          2. 要做到全兼容的辦法,可通過(guò)綁定ontouchstart和ontouchend來(lái)控制按鈕的類(lèi)名

          十二、audio元素和video元素在ios和andriod中無(wú)法自動(dòng)播放

          應(yīng)對(duì)方案:觸屏即播

          $('html').one('touchstart',function(){

          audio.play()

          })

          以上就是小猿圈web前端老師總結(jié)的HTML5+CSS3面試題一部分,想要查看下一部分可以觀(guān)看的我下篇文章,相信不會(huì)讓你失望的,學(xué)習(xí)前端可以到小猿圈網(wǎng)站去看一下最新最全面的前端課程。


          主站蜘蛛池模板: 无码成人一区二区| 国产成人高清亚洲一区91| 久久精品国产亚洲一区二区| 一区二区三区午夜| 中文字幕无码一区二区三区本日| 精品一区二区三区免费视频| 国产在线一区二区三区| 精品一区二区三区在线观看视频| 亚洲av日韩综合一区久热| 国产精品免费视频一区| 中文字幕无线码一区| 乱精品一区字幕二区| 波多野结衣中文字幕一区二区三区| 中文字幕一区二区在线播放| 日本一区精品久久久久影院| 五十路熟女人妻一区二区 | 亚洲av无码一区二区三区不卡| 国语精品一区二区三区| 亚洲制服丝袜一区二区三区 | 久久久99精品一区二区| 性无码免费一区二区三区在线| 在线|一区二区三区| 日本免费一区二区久久人人澡| 蜜芽亚洲av无码一区二区三区| 国产成人精品一区二三区在线观看 | 日韩一区二区三区不卡视频| 韩日午夜在线资源一区二区| 亚洲A∨精品一区二区三区下载| 中文字幕久久久久一区| 精品少妇人妻AV一区二区| 一本AV高清一区二区三区| 天天综合色一区二区三区| 日韩电影一区二区| 麻豆精品一区二区综合av| 3D动漫精品一区二区三区| 亚洲毛片αv无线播放一区| 国产一区中文字幕| 亚洲AV成人精品一区二区三区 | 亚洲AV无码一区二区三区鸳鸯影院| 熟女性饥渴一区二区三区| 日韩一区在线视频|