92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

首頁

優秀UI界面設計評析

藍藍設計的小編

男生運動鞋商店支付界面,顏色搭配非常舒服,鞋子攝影也很漂亮,字體字號運用非常到位。

超全面總結!產品設計中的可拓展性原則

濤濤

可拓展性原則是我自己瞎起的一個名字,高興的話你說彈性原則也行。主要意思是指界面設計要足夠的靈活,具有彈性,以滿足將來可能出現的場景。我第一次考慮這個問題是從去年7月份開始,當時接到領導的一個臨時需求,要給直投項目增加一個到期查詢的功能。因為原來的界面設計比較死板,所以突然加一個新功能導致整個布局都被打亂了,結果做的很不理想。當時我就希望可以找到一個方法來應對領導這種突如其來的需求。

產品設計的可拓展性就是為了應對將來未知的改變。改變來自于功能的改變,因為產品是由一個個功能組成的。功能的改變可以分為兩類:數量的改變和狀態的改變。當然這里不涉及到具體的功能設計,只是探討功能入口的展示。

一、數量

數量的改變指的是功能的增加,刪減與合并。多數是指新功能的增加,這就要求我們在界面(布局)設計中要給將來可能添加的新功能預留坑位。在哪里預留坑位?又給哪些功能預留呢?這里我就例舉最常見的兩種界面布局(導航)樣式來說:宮格式布局和列表式布局。

不知道大家有沒有注意到一個現象:一級頁面中主要用宮格式布局,而二級,三級頁面多數用列表式布局。這主要是因為一級頁面是產品的門戶和臉面,而且又多屬于功能的聚合頁,特別是首頁,這就要求一級頁面在展示足夠多入口的同時還要兼顧視覺吸引力。而以icon,插畫,圖像為主要表現形式的宮格式布局在視覺設計上更容易出彩。特別是icon,在相同的空間里,可以展示更多的入口。

但是其缺點就是可拓展性差,不管是2*5還是3*4,你如果想單獨新增一個功能,界面就會失衡。當然我們可以給用戶提供分頁,這就意味著有些功能需要用戶滑動才能看到,具有一定的風險。

還有一種方法就是提供全部按鈕,用戶點擊可以查看全部功能。

列表式布局就沒有這方面的顧慮,它可以在不打破界面布局的情況下增加新功能入口,但是它的缺點在于可展示的入口太少了。宮格式布局一屏可以展示20多個入口,而列表式布局只能達到其一半的水平。

這也是經常困擾設計師的一個問題,因為數據反饋一個頁面超過一屏往下內容的點擊量是急劇下滑的,所以一般的一級頁面都不會設計的很長。如何在有限的空間里展示足夠多的入口呢?

沒有什么是可以難倒我們設計師的,最近我看到一些產品在底部欄tab里動起了心思。以蘇寧易購為例,當你點擊進入「發現」,tab會變成「直播大廳」;點擊進入「首頁」,tab會變成「猜你喜歡」。所以雖然只有5個坑位但是塞進了7個tab,這是一個很好的思路。

還有在京東首頁中,用戶下拉會進入520專屬活動頁面。同樣的還有微信,用戶下拉直接顯示你最近打開的小程序。但是目前來說,大多數用戶還認為下拉只能刷新界面,對于「下拉發現新功能」足夠的缺乏認知。這樣的入口可以吸引多少的流量還有待檢驗。

對于一級頁面我還有一個建議:千萬不要隨意把功能入口放在頂部欄上。因為對于一些小功能的迭代,入口放在哪里都一樣,用戶看得到很好,看不到也無所謂。但是如果要上線一些層級比較高的功能,又不想打亂界面的原有布局,最好放到頂部欄上。特別是你的界面中如果還沒有搜索、城市定位、分享、篩選、通知等全局功能,一定要把頂部欄的位置空出來。文章開頭我說的「到期查詢」其實就屬于篩選功能。

二、狀態

上面也說了,本文所提到的可拓展性指的是入口的可拓展性。那么入口在狀態上的變化可以分為外部狀態變化和內部狀態變化。

外部狀態變化主要說的產品層面的變化,針對的是C端產品。對C端產品來說,定期組織營銷活動來拉新肯定是必不可少的。這種情況下我們需要對界面的元素進行處理使其來適應不同的活動氛圍。從這個方面來說,我們可以發現為什么宮格式布局更容易受到各大電商平臺的青睞。因為它可以根據不同的活動配置一套完全不同的icon,靈活多變。這種狀態上的百變來打造營銷氛圍的能力是列表式布局所不具備的。

列表式布局可以向用戶傳遞更多的信息,更能表現內部狀態的變化。以下圖為例,用戶可以知道自己還有一張優惠券沒有使用,知道自己本月還有126元沒還。而宮格式布局礙于空間,很難向用戶展示過多的信息。

以上方的日歷為例,近期做了一個拆紅包活動,用以icon為主的宮格布局只能加一個「拆紅包」的角標。如果采用了列表式布局,可以直接展示金額,更能起到刺激用戶的作用。

寫分析總結寫到現在讀者越來越多,所以愈發擔心自己寫的不好會誤導別人。對于設計來說,無所謂對錯,只有合適和不合適。就像上面提到的兩種布局方式,在列表式布局中你可以隨意添加新功能,但是礙于空間,可添加的功能數目也不會太多;宮格式布局倒是不怕入口放不下,但是會引起界面的失衡。設計師的能力就體現在收集用戶數據,分析具體場景,去思考得出最合理布局樣式。不要拘泥于解決方案,因為解決方案有很多,我們要學習的是解決方案中所體現的思維方式和過程。

總結

以上就是我針對產品設計中可拓展性原則的一個簡單分析總結,歡迎大家留言討論。

微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

1.把wxParse文件全部放入項目。

2.在wxml中import wxParse.wxml,并把template插入到到對應的位置上

[html] view plain copy
  1. <!--wxml-->  
  2. <import src="../../../wxParse/wxParse.wxml"/>  
  3. <view class="view-title">{{title}}</view>  
  4. <view class="view-time-box">  
  5.   <text class="view-date">{{date}}</text>  
  6.   <text class="view-time">{{time}}</text>  
  7. </view>  
  8. <template is="wxParse" data="{{wxParseData:article.nodes}}"/>  

3.在wxss中import wxParse.wxss,并設置樣式;比如‘wxParse-image’是富文本圖片轉化成image組件之后的類名,‘wxParse-p’是p標簽轉化成view組件后設置的類名

[css] view plain copy
  1. <!--wxss-->  
  2. @import "../../../wxParse/wxParse.wxss";  
  3. page{  
  4.   background#fff;  
  5. }  
  6. .view-title{  
  7.   line-height80rpx;  
  8.   font-size48rpx;  
  9.   color:#0C0C0C;  
  10.   overflowhidden;  
  11.   text-overflow: ellipsis;  
  12.   display: -webkit-box;  
  13.   -webkit-line-clamp: 2;  
  14.   -webkit-box-orient: vertical;  
  15.   max-height190rpx;  
  16.   min-height80rpx;  
  17.   width:690rpx;  
  18.   padding:30rpx 30rpx 0;  
  19. }  
  20. .view-time-box{  
  21.   height66rpx;  
  22.   line-height66rpx;  
  23.   font-size30rpx;  
  24.   color:#999999;  
  25.   margin-bottom40rpx;  
  26.   padding:0 30rpx;  
  27. }  
  28. .view-date{  
  29.   margin-right20rpx;  
  30. }  
  31. .wxParse-img{  
  32.   margin-top:20rpx;  
  33.   displayblock;  
  34.   position:relative;  
  35.   top:0;  
  36.   left:50%;  
  37.   transform: translateX(-50%);  
  38. }  
  39. .wxParse-p{  
  40.   text-indent2em;  
  41.   margin-top:20rpx;  
  42.   color:#0C0C0C;  
  43.   line-height:50rpx;  
  44.   font-size:34rpx;  
  45.   padding:0 30rpx 30rpx;  
  46.   text-alignjustify;  
  47. }  

4.js

[javascript] view plain copy
  1. var WxParse = require('../../../wxParse/wxParse.js');  
  2. Page({  
  3.   
  4.   /** 
  5.    * 頁面的初始數據 
  6.    */  
  7.   data: {  
  8.     title: '',  
  9.     date: "",  
  10.     time: "",  
  11.     id: ''  
  12.   },  
  13.   
  14.   /** 
  15.    * 生命周期函數--監聽頁面加載 
  16.    */  
  17.   onLoad: function (options) {  
  18.     this.setData({  
  19.       id:options.id  
  20.     })  
  21.   },  
  22.   onShow: function () {  
  23.     wx.showLoading({  
  24.       title: '加載中...',  
  25.     })  
  26.     var that = this;  
  27.   
  28.     // 模擬獲取數據  
  29.     setTimeout(function () {  
  30.       that.setData({  
  31.         title:'僑寶柑普茶新會陳皮僑寶柑',  
  32.         date:"2018-03-01",  
  33.         time:"13:20:53"  
  34.       })  
  35.       var article = `  
  36.         <img src="../../../imgs/index/s.png"></img>  
  37.     <p>微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)</p>  
  38.     <p>微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)</p>  
  39.         <img src="../../../imgs/index/s.png"></img>  
  40.     <p>近兩年,小青柑的火爆有目共睹,嬌小玲瓏的產品形態、便攜式的消費場景、柑與茶結合的時尚方式以及獨特的口感和養生功效,都在順應著目前年輕化、多元化、便攜化的茶葉消費市場需求,讓它成為了一大爆品。</p>  
  41.       `;  
  42.       /** 
  43.       * WxParse.wxParse(bindName , type, data, target,imagePadding) 
  44.       * 1.bindName綁定的數據名(必填) 
  45.       * 2.type可以為html或者md(必填) 
  46.       * 3.data為傳入的具體數據(必填) 
  47.       * 4.target為Page對象,一般為this(必填) 
  48.       * 5.imagePadding為當圖片自適應是左右的單一padding(默認為0,可選) 
  49.       */  
  50.       WxParse.wxParse('article''html', article, that, 20);  
  51.         
  52.       // 更改數據、獲取新數據完成  
  53.       wx.hideLoading();  
  54.     }, 500)  
  55.   }  
  56. })  
具體的API可以去GitHub上查看:https://github.com/icindy/wxParse








藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務


js中常見的位置屬性-offset,scroll,client系列

高勁

前言
       Javascript中的offset、scroll、client系列都是比較常用的坐標屬性,也是比較容易混淆的知識點。
offset家族
       offset家族一般在節點對象里面使用。
       offsetParent
             1.    如果當前元素的父級元素沒有進行css定位(position為absolute或relative),offsetParent為body。
             2.    如果當前元素的父級元素中有css定位(position為absolute或relative),offsetParent取最近的那個父級元素。
       offsetLeft/Top計算規則:
             標準流、浮動、非脫標定位
              offsetLeft = 自己的margin+offsetParent的margin、padding、border
              脫標定位
              offsetLeft = 自己的left + margin-left
        注意:與stlye.left的區別
              offsetLeft只可讀,不可寫。也就是說,通過offsetLeft只能獲取元素的左偏移值,而無法去設置元素的左偏移值。
               stlye.left可讀可寫,但是通過style.left獲取元素的偏移值,是一個帶單位的字符串,例如“100px”。

            (offsetTop同理)

        offsetWidth(和offsetHeight:

        其實就是一個元素的實際寬度 = width+padding+border

client家族】

        clientWidth (clientHeight) = width+padding

              該屬性指的是元素的可視部分寬度和高度

              假如元素有padding有滾動,且滾動是顯示的

              clientWidth = width + padding - 滾動軸寬度

       clientTop(clientLeft):

             這一對屬性是用來讀取元素的border的寬度和高度的

             clientTop = border-top 的 border-width

             clientLeft = border-left 的 border-width

【scroll家族】

150537.jpg.png

  如上圖所示
       scrollWidth(和scrollHeight
          無滾動軸時:scrollWidth = clientWhidth = width + padding
          有滾動軸時:scrollWidth = 實際內容的寬度 + padding
       scrollTop(和scrollLeft
           這對元素是可讀寫的,指的是當元素其中的內容超出其寬高的時候,元素被卷起的寬度和高度
【事件里面的clientXoffsetX,screenX


  • event.clientX:設置或獲取鼠標指針位置相對于當前窗口的 x 坐標,其中客戶區域不包括窗口自身的控件和滾動條
  • event.clientY:設置或獲取鼠標指針位置相對于當前窗口的 y 坐標,其中客戶區域不包括窗口自身的控件和滾動條
  • vent.offsetX:設置或獲取鼠標指針位置相對于觸發事件的對象的 x 坐標
  • event.offsetY:設置或獲取鼠標指針位置相對于觸發事件的對象的 y 坐標
  • event.screenX 設置或獲取獲取鼠標指針位置相對于用戶屏幕的 x 坐標。
  • event.screenY設置或獲取鼠標指針位置相對于用戶屏幕的 y 坐標。


【window系列】
  • window.innerHeight指的是瀏覽器窗口顯示html文檔的可視區域的高度
  • window.outerHeight指的是瀏覽器窗口的高度 ,包括了工具欄,地址欄等等高度

       window.screen包含了屏幕的信息
  • window.screen.width   電腦屏幕的整個寬度
  • window.screen.availWidth   電腦屏幕除去菜單條之后的寬度
  • window.screen.left   瀏覽器窗口的左上角距離電腦屏幕最左側的距離




微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

1.把wxParse文件全部放入項目。

2.在wxml中import wxParse.wxml,并把template插入到到對應的位置上

[html] view plain copy
  1. <!--wxml-->  
  2. <import src="../../../wxParse/wxParse.wxml"/>  
  3. <view class="view-title">{{title}}</view>  
  4. <view class="view-time-box">  
  5.   <text class="view-date">{{date}}</text>  
  6.   <text class="view-time">{{time}}</text>  
  7. </view>  
  8. <template is="wxParse" data="{{wxParseData:article.nodes}}"/>  

3.在wxss中import wxParse.wxss,并設置樣式;比如‘wxParse-image’是富文本圖片轉化成image組件之后的類名,‘wxParse-p’是p標簽轉化成view組件后設置的類名

[css] view plain copy
  1. <!--wxss-->  
  2. @import "../../../wxParse/wxParse.wxss";  
  3. page{  
  4.   background#fff;  
  5. }  
  6. .view-title{  
  7.   line-height80rpx;  
  8.   font-size48rpx;  
  9.   color:#0C0C0C;  
  10.   overflowhidden;  
  11.   text-overflow: ellipsis;  
  12.   display: -webkit-box;  
  13.   -webkit-line-clamp: 2;  
  14.   -webkit-box-orient: vertical;  
  15.   max-height190rpx;  
  16.   min-height80rpx;  
  17.   width:690rpx;  
  18.   padding:30rpx 30rpx 0;  
  19. }  
  20. .view-time-box{  
  21.   height66rpx;  
  22.   line-height66rpx;  
  23.   font-size30rpx;  
  24.   color:#999999;  
  25.   margin-bottom40rpx;  
  26.   padding:0 30rpx;  
  27. }  
  28. .view-date{  
  29.   margin-right20rpx;  
  30. }  
  31. .wxParse-img{  
  32.   margin-top:20rpx;  
  33.   displayblock;  
  34.   position:relative;  
  35.   top:0;  
  36.   left:50%;  
  37.   transform: translateX(-50%);  
  38. }  
  39. .wxParse-p{  
  40.   text-indent2em;  
  41.   margin-top:20rpx;  
  42.   color:#0C0C0C;  
  43.   line-height:50rpx;  
  44.   font-size:34rpx;  
  45.   padding:0 30rpx 30rpx;  
  46.   text-alignjustify;  
  47. }  

4.js

[javascript] view plain copy
  1. var WxParse = require('../../../wxParse/wxParse.js');  
  2. Page({  
  3.   
  4.   /** 
  5.    * 頁面的初始數據 
  6.    */  
  7.   data: {  
  8.     title: '',  
  9.     date: "",  
  10.     time: "",  
  11.     id: ''  
  12.   },  
  13.   
  14.   /** 
  15.    * 生命周期函數--監聽頁面加載 
  16.    */  
  17.   onLoad: function (options) {  
  18.     this.setData({  
  19.       id:options.id  
  20.     })  
  21.   },  
  22.   onShow: function () {  
  23.     wx.showLoading({  
  24.       title: '加載中...',  
  25.     })  
  26.     var that = this;  
  27.   
  28.     // 模擬獲取數據  
  29.     setTimeout(function () {  
  30.       that.setData({  
  31.         title:'僑寶柑普茶新會陳皮僑寶柑',  
  32.         date:"2018-03-01",  
  33.         time:"13:20:53"  
  34.       })  
  35.       var article = `  
  36.         <img src="../../../imgs/index/s.png"></img>  
  37.     <p>微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)</p>  
  38.     <p>微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)</p>  
  39.         <img src="../../../imgs/index/s.png"></img>  
  40.     <p>近兩年,小青柑的火爆有目共睹,嬌小玲瓏的產品形態、便攜式的消費場景、柑與茶結合的時尚方式以及獨特的口感和養生功效,都在順應著目前年輕化、多元化、便攜化的茶葉消費市場需求,讓它成為了一大爆品。</p>  
  41.       `;  
  42.       /** 
  43.       * WxParse.wxParse(bindName , type, data, target,imagePadding) 
  44.       * 1.bindName綁定的數據名(必填) 
  45.       * 2.type可以為html或者md(必填) 
  46.       * 3.data為傳入的具體數據(必填) 
  47.       * 4.target為Page對象,一般為this(必填) 
  48.       * 5.imagePadding為當圖片自適應是左右的單一padding(默認為0,可選) 
  49.       */  
  50.       WxParse.wxParse('article''html', article, that, 20);  
  51.         
  52.       // 更改數據、獲取新數據完成  
  53.       wx.hideLoading();  
  54.     }, 500)  
  55.   }  
  56. })  
具體的API可以去GitHub上查看:https://github.com/icindy/wxParse








藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務


HTML5網頁掃描二維碼

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

[HTML]代碼

<!DOCTYPE html>
<html>
<head>
    <title>二維碼掃描測試</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<style type="text/css">
    html, body {
        height: 100%;
        width: 100%;
        text-align: center;
    }
</style>
<script src="../js/jquery-1.11.1.min.js"></script>
<script>
    //這段代 主要是獲取攝像頭的視頻流并顯示在Video 簽中
    var canvas = null, context = null, video = null;
    window.addEventListener("DOMContentLoaded", function () {
        try {
            canvas = document.getElementById("canvas");
            context = canvas.getContext("2d");
            video = document.getElementById("video");
            var videoObj = { "video": true, audio: false },
                flag = true,
                MediaErr = function (error) {
                    flag = false;
                    if (error.PERMISSION_DENIED) {
                        alert('用戶拒絕了瀏覽器請求媒體的權限', '提示');
                    } else if (error.NOT_SUPPORTED_ERROR) {
                        alert('對不起,您的瀏覽器不支持拍照功能,請使用其他瀏覽器', '提示');
                    } else if (error.MANDATORY_UNSATISFIED_ERROR) {
                        alert('指定的媒體類型未接收到媒體流', '提示');
                    } else {
                        alert('系統未能獲取到攝像頭,請確保攝像頭已正確安裝?;驀L試刷新頁面,重試', '提示');
                    }
                };
            //獲取媒體的兼容代碼,目前只支持(Firefox,Chrome,Opera)
            if (navigator.getUserMedia) {
                //qq瀏覽器不支持
                if (navigator.userAgent.indexOf('MQQBrowser') > -1) {
                    alert('對不起,您的瀏覽器不支持拍照功能,請使用其他瀏覽器', '提示');
                    return false;
                }
                navigator.getUserMedia(videoObj, function (stream) {
                    video.src = stream;
                    video.play();
                }, MediaErr);
            }
            else if (navigator.webkitGetUserMedia) {
                navigator.webkitGetUserMedia(videoObj, function (stream) {
                    video.src = window.webkitURL.createObjectURL(stream);
                    video.play();
                }, MediaErr);
            }
            else if (navigator.mozGetUserMedia) {
                navigator.mozGetUserMedia(videoObj, function (stream) {
                    video.src = window.URL.createObjectURL(stream);
                    video.play();
                }, MediaErr);
            }
            else if (navigator.msGetUserMedia) {
                navigator.msGetUserMedia(videoObj, function (stream) {
                    $(document).scrollTop($(window).height());
                    video.src = window.URL.createObjectURL(stream);
                    video.play();
                }, MediaErr);
            } else {
                alert('對不起,您的瀏覽器不支持拍照功能,請使用其他瀏覽器');
                return false;
            }
            if (flag) {
                //alert('為了獲得更準確的測試結果,請盡量將二維碼置于框中,然后進行拍攝、掃描。 請確保瀏覽器有權限使用攝像功能');
            }
            //這個是拍照按鈕的事件,
            $("#snap").click(function () { startPat(); }).show();
        } catch (e) {
            printHtml("瀏覽器不支持HTML5 CANVAS");
        }
    }, false);
    //打印內容到頁面
    function printHtml(content) {
        $(window.document.body).append(content + "<br/>");
    }
    //開始拍照
    function startPat() {
        setTimeout(function () {//防止調用過快
            if (context) {
                context.drawImage(video, 0, 0, 320, 320);
                CatchCode();
            }
        }, 200);
    }
    //抓屏獲取圖像流,并上傳到服務器
    function CatchCode() {
        if (canvas != null) {
            //以下開始編 數據
            var imgData = canvas.toDataURL("image/jpeg");
            //將圖像轉換為base64數據
            var base64Data = imgData; //在前端截取22位之后的字符串作為圖像數據
            $.ajax({
                type: 'post',
                url: '../ashx/HandlerScan.ashx?method=ParseImage',
                data: 'ImgData=' + base64Data,
                dataType: "json",
                cache: false,
                timeout: 10000,
                success: function (mes) {
                    if (mes.code == '1') {
                        alert('未識別二維碼,請重新掃描!');
                    }
                    else {
                        alert(mes.name);
                    }
                },
                error: function (err) {
                    alert('掃描失敗' + err);
                }
            });
        }
    }
</script>
<body>
    <div id="support"></div>
    <div id="contentHolder">
        <video id="video" width="320" height="320" autoplay></video>
        <canvas id="canvas" style="display:none; background-color:#F00;" width="320" height="320"></canvas><br/>
        <button id="snap" style="display:none; height:50px; width:120px;">開始掃描</button>
    </div>
</body>
</html>  

[C#后臺]

    public class HandlerScan : IHttpHandler
    {
        private JsonResult js = new JsonResult();
        public void ProcessRequest(HttpContext context)
        {
            string result = string.Empty;
            string method = context.Request.QueryString.ToString();//獲取想要做的操作
            switch (method)
            {
                case "method=ParseImage":
                    result = ParseImage(context);
                    break;
                default:
                    break;
            }
            context.Response.ContentType = "text/json";
            context.Response.Write(result);
        }
        private string ParseImage(HttpContext context)
        {
            try
            {
                string imgStr = context.Request.Params["ImgData"].ToString();
                imgStr = imgStr.Replace("data:image/jpeg;base64,", "");
                //整理字符串
                imgStr = imgStr.Replace(" ", "+");
                byte[] arr = Convert.FromBase64String(imgStr);
                MemoryStream ms = new MemoryStream(arr, 0, arr.Length);
                Bitmap bmp = new Bitmap(ms);
                //解析圖片
                Result result = new BarcodeReader().Decode(bmp);
                if(result == null)
                {
                    return "{\"code\":1,\"name\":\"\"}";
                }
                else
                {
                    string[] a = result.Text.Split(','); 
                    string str = "{\"code\":0,\"name\":\"" + a[0] + "\"}";
                    return str; 
                }
            }
            catch (Exception ex)
            {
                return "{\"code\":1,\"msg\":\"" + ex.Message + "\",\"userName\":\"\"}";
            }
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

12條鮮有人知的css事實

高勁

      此文為譯文,在這篇文章中提到了12條我們前端人員在日常工作中不是特別熟悉而又確實可以使用或者瀏覽器是可以很好支持的CSS技巧,熟知這些點,對我們深入研究CSS有很好的幫助。在本文中,用括號的方式加了一些簡單的算是注釋的個人理解。    原文地址:http://www.sitepoint.com/12-little-known-css-facts-the-sequel/

1、 border-radius屬性可以使用'/'(斜杠)標簽 

      不管你信不信,下邊是有效的border-radius代碼:

.box {
border-radius: 35px 25px 30px 20px / 35px 25px 15px 30px;

    }

    如果你之前沒有見過這些,這里你可能會有一些困惑,所以這里有規范的解釋:

   “如果斜杠/前后都設了值,那么斜杠前面的值就設定橫向的圓角半徑值,而斜杠后面的值就是設定縱向的半徑值。如果沒有斜杠的話,就把橫向跟縱向的值設定為相等?!?/span>

763731149396848.png

圖片注釋:“border-top-left-radius: 55pt 25pt 的兩個值定義了這個圓角的曲率(彎曲度) ”  所以,斜杠在值中的作用是讓你創建不對稱(橫向跟縱向值)的圓角曲率

2、使用bolder、lighter相關關鍵字進行font-weight屬性的定義

    正常來說你所看到的font-weight 屬性的定義,它的值要么是normal要么是bold。你也偶爾能看到整數以整百為增量的值:100,200、、最大到900.
     然而,bolder跟lighter這兩個值經常會被忘記。

         根據規范定義,這兩個關鍵詞指定了比繼承值更粗或更細的值。它的出現會讓你在處理一個比簡單的‘bold’更粗一點或者比正常文本更細一點的多種權重的字號的時候表現的更加明顯。(這塊可能會有點難理解,其實這里是跟字體本身有關聯的,如果你的字體,比如例子中用到的‘Exo 2’字體中,因為這個字體最細為100,bolder一下就變成400,再bolder一下是700,其實它這個bolder跟lighter是有個固定跳到的數值的,只會匹配到400,700,900這樣的值里,當你的繼承值為100、200或300,bolder一下,這個bolder的值都會是400,繼承值為900,800,lighter一下,這個值都一樣會是700,所以兩個關鍵字其實是只會是400、700、900三個值的。)

3、關于outline-offset屬性
    outline 屬性由于它能夠幫助調試而被眾所周知(它不影響頁面流)。規范上增加了一個outline-offset屬性,它的作用完全跟它名字所表示的一樣--讓你定義它的外框線應該距離元素本身的偏移量。
    需要注意的就是,雖然outline屬性是一個簡寫屬性,但它不包含outline-offset屬性,所以你每次都需要再單獨定義outline-offset。

     outline-offset屬性唯一的缺點就是,它在IE瀏覽器(即使是IE11)中不起效。

4、關于table-layout屬性

    你可能會想,這是很老的信息了。我對display: table很熟悉,最早用來實現垂直居中的一種方法。但那不是我想說,注意我要說的是table-layout屬性,而不是display屬性。
    table-layout屬性不像CSS的其他屬性那樣容易解釋,所以我們還是先來看看規范是如何解釋的:
    "根據這個算法,table的橫向布局不依賴于單元格的內容;它僅僅依賴于表格的寬度、列的寬度以及邊框和單元格的間距"
    這可能也是W3C規范史上第一次出現這樣很難理解的東西

5、vertical-align屬性用在表格跟非表格中的時候表現不一樣
    如果你在2000年或者更早就開始接觸網站編程,或者你處理過很多HTML電子郵件的話,那么你可能會認為vertical-align 屬性是對老的HTML4中valign屬性一個在HTML5里過時的,不符合功能要求的標簽)的一個標準升級。
    但在CSS中vertical-align 并不是起到那樣的作用。除開表格,我認為這個屬性更牛逼的地方并不在于表格中的表現。
    所以,這個屬性被應用于常規的元素跟表格單元的時候有什么不一樣的地方呢?
    當vertical-align 不是應用在表格單元的時候,它遵循下邊這些基本規則:

  • 它只在inline或inline-block元素中起效。
  • 它對元素中的內容不起效,但能改變該元素相對于其他inline或inline-block元素的對齊。
  • 它受文本/字體屬性(比如行高line-height)或者相鄰inline或inline-block元素的大小設置的影響。

6、偽元素::first-letter比你想象中更靈活

    偽元素::first-letter可以給元素的第一個字母定義樣式,讓你實現在印刷中多年前就有的段落效果(drop-cap 印刷的書本中經常能看到的段落中的第一個字比其他字號要大的效果)。
    有個好消息就是瀏覽器快要出一個關于元素的首字母構成的標準了。我最早在 Matt Andrews的twitter上看到有關這個推文,雖然他僅僅是發推文吐槽::first-letter選擇器很糟糕。

7、你可以在HTML class列表中使用無效字符作為分隔符
    這個概念是Ben Everard在2013年的時候提出,而且我認為它值得推廣一下。Ben的觀點是用斜杠去將他的HTML類名進行分組,以便他的代碼能夠更好地閱讀或瀏覽。他的觀點認為,轉義斜杠是一個無效字符,瀏覽器會無視它。
    所以你的HTML實例可能是這樣的:

<div class="col col-4 col-8 c-list bx bx--rounded bx--transparent"> 使用斜杠后,變成這樣: <div class="col col-4 col-8 / c-list / bx bx--rounded bx--transparent"> 你也可以使用任何字符(無效的或者空字符)去實現同樣的效果: <div class="col col-4 col-8 ** c-list ** bx bx--rounded bx--transparent">[/font]
<div class="col col-4 col-8 || c-list || bx bx--rounded bx--transparent">
 
<div class="col col-4 col-8 && c-list && bx bx--rounded bx--transparent">

8、動畫重復的次數可以是帶小數的值

   在寫CSS關鍵幀動畫的時候,你應該可以用animation-iteration-count 屬性來定義動畫重復執行的次數:

.example {
animation-iteration-count: 3;
}

     這個例子中的整數值將會讓這個動畫重復執行3次。但你可能不知道這里我們可以使用小數值:

.example {
animation-iteration-count: .5;
}

   在這個案例中,這個動畫將執行半次(它會在第一次動畫循環的中途停止)。

9、動畫名稱會在動畫的簡寫方式中影響動畫的使用
      有些開發者可能已經發現了這一點,在規范中對這個也有個提醒。比方說,你有以下的動畫代碼:

@keyframes reverse {
from {
left: 0;
}
  to {
left: 300px;
}
}
  .example {
animation: reverse 2s 1s;
}

    注意這里我使用reverse作為動畫的名稱。簡單來看,這并沒什么不妥,但要注意當我們在用上面的代碼作為一個例子時發生了什么:
    這段動畫并不起效,因為‘reverse’是animation-direction屬性的一個關鍵字。任何的動畫名稱在匹配到一個簡寫語法中的關鍵字值的時候都會發生這樣的情況。但在普通寫法中這樣的情況不會發生(animation-name這樣單獨的動畫名稱寫法的時候)。
    動畫命名在簡寫語法中包含了任何定時功能的關鍵字 (比如infinite, alternate, running, paused 等等)都會被阻斷。

10、使用樣式選取元素列表中元素的范圍
    我不知道是誰首先這樣用的,但我第一次是在Gunnar Bittersmann 的這個demo 中看到的。比如說有一個20個元素的有序列表,你想選擇第7到14個元素。這里你可以使用一個選擇器來實現:

ol li:nth-child(n+7):nth-child(-n+14) {
background: lightpink;

}

    這個代碼使用了鏈式結構的偽類表達式。雖然表達式有點難理解,但你可以通過表達式中的數字看到你想要選中的范圍。
    更詳細地解釋這個工作的原理:在鏈式結構的第一部分,表達式為“選中第七個元素及后面的所有元素”。第二部分的意思是“選取第十四個元素及前面的所有元素”。但由于兩部分是鏈接在一起的,每一個限制前一個的范圍。所以鏈式結構的第二部分不允許第一部分超過第十四個元素,然而第一部分又不允許第二部分選取到第七個元素之前的元素。

11、偽元素也適用于一些空元素
    如果你跟我一樣,嘗試過把偽元素附加到一個圖片或者表格input標簽上。你會發現這樣并不生效因為偽元素在非閉合元素上無效。我想很多開發者都認為空元素(即沒有閉合標簽的元素)都是這樣的。但這并不正確。

12、有些屬性值在選擇器中是不區分大小寫的
    這是一個不起眼的點,讓他們通過下邊的HTML來看:

<div class="box"></div>
<input type="email">

    你可以通過屬性選擇器來給他們兩個添加樣式,像這樣:

div[class="box"] {
color: blue;
}
 
input[type="email"] {
border: solid 1px red;
}

    上面這樣是沒問題的,那下邊這樣呢?

div[class="BOX"] {
color: blue;
}
 
input[type="EMAIL"] {
border: solid 1px red;
}

    現在兩個屬性值都是大寫的。在這個示例中,因為class 屬性是區分大小寫的,所以 .box 元素的樣式不生效。而另外一個email的標簽,卻由于type 的屬性值不區分大小寫,所以它的樣式能生效。這并非什么重大發現,只是一些你之前可能沒留意到的。

微信小程序學習參考demo源碼集合

seo達人

如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

微信小程序學習參考demo源碼集合,僅供參考學習用途?。。?/span>

面對面翻譯 微信小程序源碼下載,語音翻譯類小程序工具http://www.henkuai.com/thread-37499-1-1.html

開源微信小程序,小團隊管理小程序下載 :http://www.henkuai.com/thread-37498-1-1.html

微信小程序多用戶商城demo,還在開發中:http://www.henkuai.com/thread-37497-1-1.html

微信小程序搶課列表demo :http://www.henkuai.com/thread-37496-1-1.html

微信小程序地圖實時顯示demo:http://www.henkuai.com/thread-37495-1-1.html

高質量微信小程序UI組件庫:http://www.henkuai.com/thread-37492-1-1.html

購房搖號助手微信小程序下載:http://www.henkuai.com/thread-37471-1-1.html

股票金融微信小程序客戶端:http://www.henkuai.com/thread-37470-1-1.html
接龍微信小程序腳本,創建房間等等:http://www.henkuai.com/thread-37469-1-1.html
微信小程序統一中央服務器的思路,校園小情書聯盟:http://www.henkuai.com/thread-37468-1-1.html
輔導員預約微信小程序:http://www.henkuai.com/thread-37467-1-1.html
仿星巴克用心說微信小程序:http://www.henkuai.com/thread-37466-1-1.html
微信小程序頂部滑動導航菜單欄:http://www.henkuai.com/thread-37465-1-1.html
微信小程序朋友圈點贊功能,讓你的朋友圈秀起來:http://www.henkuai.com/thread-37464-1-1.html
微信小程序版 “前端TOP100”:http://www.henkuai.com/thread-37463-1-1.html
微信小程序3D輪播圖效果示例:http://www.henkuai.com/thread-37459-1-1.html
微信小程序仿滴滴打車小程序源碼下載,歡迎加入開發:http://www.henkuai.com/thread-37458-1-1.html
微信小程序仿青桔單車,打開地圖掃碼開鎖:http://www.henkuai.com/thread-37436-1-1.html
微信小程序投票器,投票小程序源碼:http://www.henkuai.com/thread-37434-1-1.html
微信小程序時間軸源碼,記錄中國LGBT事件:http://www.henkuai.com/thread-37433-1-1.html
微信小程序api攔截器,完美兼容原生小程序項目:http://www.henkuai.com/thread-37431-1-1.html
微信小程序使用map組件實現多點定位顯示:http://www.henkuai.com/thread-37421-1-1.html
微信小程序商城前端,展示嬰幼兒商品: http://www.henkuai.com/thread-37418-1-1.html
答題小程序免費送,有人用這個“小程序”每天做100000:http://www.henkuai.com/thread-37412-1-1.html

使用微信小程序map組件開發的一個demo,各種坑:http://www.henkuai.com/thread-37400-1-1.html

微信小游戲2048源碼下載,經典的小游戲:http://www.henkuai.com/thread-37399-1-1.html

微信小程序-菜譜百科,小程序開發學習demo :http://www.henkuai.com/thread-37380-1-1.html

鮮切水果微信小程序,水果商城小程序:http://www.henkuai.com/thread-37379-1-1.html

微信小程序線上圖書館前端+后端源碼下載,圖書查詢小程序 :http://www.henkuai.com/thread-37378-1-1.html

微信小程序日歷打卡項目下載,輕巧好用的日歷打卡組件:http://www.henkuai.com/thread-37367-1-1.html

微信小程序練手項目,包含抽屜效果、底部tab效果實現等:http://www.henkuai.com/thread-37365-1-1.html

【獨立小程序】志匯餐飲8.6 小程序前端修復版本:http://www.henkuai.com/thread-37344-1-1.html

仿今日頭條3.0 小程序前端 demo分享:http://www.henkuai.com/thread-37338-1-1.html

微信小程序真心話大冒險游戲,朋友聚會必備小程序:http://www.henkuai.com/thread-37337-1-1.html

微信小游戲頭腦王者自動答題輔助插件,小游戲作弊工具:http://www.henkuai.com/thread-37336-1-1.html

微信小程序左滑操作自定義組件,讓你的小程序開發更:http://www.henkuai.com/thread-37334-1-1.html

藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

設計規范|Web端設計組件篇—文本與選擇器

博博


人人都是產品經理 2018-04-23 00:00:00

本文作者主要講解表單中的文本和選擇器,enjoy~

設計規范|Web端設計組件篇—文本與選擇器

根據組件的用途,可以分為六大類:Feedback 反饋、form 表單、basic 基礎、data 數據 、navigation 導航、other 其他。

設計規范|Web端設計組件篇—文本與選擇器

表單在網頁中主要負責數據采集功能;用戶需要填寫輸入數據并且提交到數據庫,則這種組件就是表單類。

本文主要講解表單中的文本和選擇器,其中文本分為input短文本、InputAutocomplete 短文本聯想和InputMultiline 長文本。

input 短文本

定義:用于用戶文本輸入,并以字符串的方式提交到數據庫。

使用場景:

  1. 用戶需要輸入字符時
  2. 通過鼠標鍵盤輸入內容
  3. 輸入的文本通常置于輸入框

例如網易考拉優惠券兌換的表單填寫,就是短文本輸入組件,前面是標題,后面是文本輸入框。

設計規范|Web端設計組件篇—文本與選擇器

input短文本組件的展示形式可以分為三類。第1類是標題和輸入框左右排列;第二類是標題和輸入框上下排列;第三列不需要標題的排列。

標題和輸入框左右排列時,短文本組件存在的狀態有:初始態、激活態、報錯態、完成態和禁用態。

設計規范|Web端設計組件篇—文本與選擇器

常見的表單類排版都是左右排版,同時表單之間,標題采用左對齊,輸入框左對齊的情況比較多。有時候標題名字過長這樣話 左右排列就不夠好,這時候需要采用上下排列。

設計規范|Web端設計組件篇—文本與選擇器

標題和輸入框上下排版時,存在狀態和左右排列是一致的。

設計規范|Web端設計組件篇—文本與選擇器

當沒有標題時,存在狀態同左右排列的規則和邏輯。

設計規范|Web端設計組件篇—文本與選擇器

InputAutocomplete 短文本聯想

定義:用戶用于文本輸入,在輸入過程中會聯想匹配文本選項,并以字符串的方式提交到數據庫。

使用場景:

  1. 需要用戶輸入文本時。
  2. 提供聯想匹配文本,減少用戶輸入成本。
  3. 在輸入過程中根據用戶輸入的內容,出現匹配選項,提交的數據是文本而非枚舉項。

例如百度搜索,在輸入框輸入關鍵詞時會出現對應的聯想匹配文本。

設計規范|Web端設計組件篇—文本與選擇器

和input短文本組件相比,InputAutocomplete 短文本聯想唯一的不同就是新增了聯想匹配選項,并且提交的是文本而非枚舉項。

標題和輸入框左右排列時,InputAutocomplete 短文本聯想組件存在的狀態有:初始態、激活態、報錯態、完成態和禁用態。

設計規范|Web端設計組件篇—文本與選擇器

上下排列的狀態和規則邏輯同左右排列。

設計規范|Web端設計組件篇—文本與選擇器

不含標題的狀態和規則邏輯同左右排列。

設計規范|Web端設計組件篇—文本與選擇器

InputMultiline 長文本

定義:用戶用于長文本輸入,并以文本的方式提交到數據庫。

使用場景:

  1. 多段文字輸入
  2. 需要換行
  3. 輸入的文本通常置于輸入框中

例如新浪微博,在輸入框發微博時,就是長文本輸入,可以換行。

設計規范|Web端設計組件篇—文本與選擇器

標題和輸入框左右排列時,InputMultiline 長文本存在的狀態有:初始態、激活態、報錯態、完成態和禁用態。在輸入過程中一般有字數統計,超過限制字數,不允許用戶輸入。

設計規范|Web端設計組件篇—文本與選擇器

上下排列邏輯和規則同左右排列。

設計規范|Web端設計組件篇—文本與選擇器

不含標題的邏輯同左右排列。

設計規范|Web端設計組件篇—文本與選擇器

select 選擇器

定義:用戶通過選擇枚舉項,提交到服務器。后端存儲為枚舉項。

使用場景:

  1. 彈出一個下拉選項給用戶選擇操作
  2. 當選項少時(少于 5 項),建議直接將選項平鋪,使用 Radio 是更好的選擇。

例如淘寶賣家后臺篩選訂單的狀態時,點擊選擇器,出現下拉列表。這就是一個常見的選擇器,選擇器分為多選和單選兩大類。

設計規范|Web端設計組件篇—文本與選擇器

下圖為選擇器基本樣式,就是簡單的下拉選項,不可進行關鍵詞的搜索。

設計規范|Web端設計組件篇—文本與選擇器

下圖是可以搜索的選擇器,當輸入框處于激活態時,浮出下拉列表。在輸入過程中,出現匹配枚舉項,點擊枚舉項,則輸入的關鍵詞清空,同時下拉選項收起。輸入框出現選擇的選項。

設計規范|Web端設計組件篇—文本與選擇器

有時候存在一個場景。用戶對需要填寫的選項設為空選項,則需要空值的選項。

設計規范|Web端設計組件篇—文本與選擇器

有時候存在一個場景。用戶選擇了一個選項,但是后面想去掉選擇的選項,不進行選擇。

設計規范|Web端設計組件篇—文本與選擇器

選擇器多選組件中需要注意的一點就是:用戶在輸入關鍵詞中,選擇對應下拉選項,則輸入的字符串清空,同時出現該選項tag。

設計規范|Web端設計組件篇—文本與選擇器

常用正則表達式20例

高勁

   總結了工作中可能經常會用到的各類正則表達式的寫法。
   方便以后進行查找,減少工作量。

   1. 校驗基本日期格式

var reg1 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/;
var reg2 = /^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}年\d{1,2}月\d{1,2}日$)$/;

   2. 校驗密碼強度
   密碼的強度必須是包含大小寫字母和數字的組合,不能使用特殊字符,長度在8-10之間。

var reg = /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/;

   3. 校驗中文 

   字符串僅能是中文。

var reg = /^[\\u4e00-\\u9fa5]{0,}$/; 4. 由數字、26個英文字母或下劃線組成的字符串 var reg = /^\\w+$/; 5. 校驗E-Mail 地址
同密碼一樣,下面是E-mail地址合規性的正則檢查語句。
var reg = /[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?/; 6. 校驗身份證號碼
下面是身份證號碼的正則校驗。15 或 18位。
15位: var reg = /^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$/; 18位: var reg = /^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$/; 7. 校驗日期
“yyyy-mm-dd” 格式的日期校驗,已考慮平閏年。 var reg = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/; 8. 校驗金額
金額校驗,到2位小數。 var reg = /^[0-9]+(.[0-9]{2})?$/; 9. 校驗手機號
下面是國內 13、15、18開頭的手機號正則表達式。(可根據目前國內收集號擴展前兩位開頭號碼) var reg = /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$/;    10. 判斷IE的版本
   IE目前還沒被完全取代,很多頁面還是需要做版本兼容,下面是IE版本檢查的表達式。

var reg = /^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\\/[5-9]\\.0).*$/;

      11. 校驗IP-v4地址

var reg = /\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b/;

     12. 校驗IP-v6地址

var reg = /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/;

      13. 檢查URL的前綴
   應用開發中很多時候需要區分請求是HTTPS還是HTTP,通過下面的表達式可以取出一個url的前綴然后再邏輯判斷。

if (!s.match(
    /^[a-zA-Z]+:\/\//
  )) {
  s =
    'http://' +
    s;

}

      14. 提取URL鏈接
   下面的這個表達式可以篩選出一段文本中的URL。

var reg = /^(f|ht){1}(tp|tps):\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?/;    15. 文件路徑及擴展名校驗
   驗證 windows下文件路徑和擴展名(下面的例子中為.txt文件)
var reg = /^([a-zA-Z]\\:|\\\\)\\\\([^\\]+\\)*[^\\/:*?"<>|]+\\.txt(l)?$/;       16. 提取Color Hex Codes
   有時需要抽取網頁中的顏色代碼,可以使用下面的表達式。
var reg = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; 17. 提取網頁圖片
   假若你想提取網頁中所有圖片信息,可以利用下面的表達式。
var reg = /\\< *[img][^\\>]*[src] *= *[\\"\']{0,1}([^\\"\'\ >]*)/;    18. 提取頁面超鏈接
   提取html中的超鏈接。

var reg = /(<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\/\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>/;

   19. 查找CSS屬性
   通過下面的表達式,可以搜索到相匹配的CSS屬性。

var reg = /^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}/;

   20. 抽取注釋
   如果你需要移除HMTL中的注釋,可以使用如下的表達式。

var reg = /<!--(.*?)-->/;

日歷

鏈接

個人資料

藍藍設計的小編 http://www.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
日韩亚洲精品视频| 国产精品吹潮在线观看| 午夜免费在线观看精品视频| 亚洲色图50p| 久久久在线免费观看| 91高清视频在线免费观看| 91天堂在线观看| 热久久视久久精品18亚洲精品| 亚洲国产免费av| 精品偷拍一区二区三区在线看| 亚洲肉体裸体xxxx137| 欧美日韩精品在线观看| 亚洲免费小视频| 国产自产女人91一区在线观看| 日韩中文字幕网站| 91免费视频网站| 日韩av电影国产| 伊人久久久久久久久久久| 国产精品网站入口| 亚洲已满18点击进入在线看片| 国产香蕉一区二区三区在线视频| 国产精品嫩草视频| 久久久精品在线| 69**夜色精品国产69乱| 精品久久久久久中文字幕| 国产91对白在线播放| 国产一区二区日韩| 久久久精品中文字幕| 日韩欧美极品在线观看| 国产精品7m视频| 日韩少妇与小伙激情| 亚洲一区二区三区在线视频| www.日韩不卡电影av| 夜夜嗨av色一区二区不卡| 91久久久久久久久久久久久| 国产主播精品在线| 欧美激情乱人伦| 日韩三级影视基地| 欧美尺度大的性做爰视频| 欧美国产日韩二区| 成人xvideos免费视频| 久久精品国产69国产精品亚洲| 日韩电影免费观看在线观看| 欧美黑人xxxx| 欧美亚洲日本网站| 91麻豆国产语对白在线观看| 国产午夜一区二区| 另类视频在线观看| 亚洲日韩欧美视频| 一区二区中文字幕| 日韩精品久久久久| 国产欧美久久一区二区| 国产精自产拍久久久久久蜜| 欧美日韩高清在线观看| 91国产美女视频| 亚州欧美日韩中文视频| 欧美黄色成人网| 国产精品久在线观看| 亚洲sss综合天堂久久| 成人激情视频在线播放| 在线成人中文字幕| www.日韩.com| 日韩精品久久久久久久玫瑰园| 国产亚洲美女精品久久久| 亚洲国产另类 国产精品国产免费| 国产日韩中文字幕在线| 高清日韩电视剧大全免费播放在线观看| 欧美大学生性色视频| 正在播放欧美一区| 日韩午夜在线视频| 国产v综合ⅴ日韩v欧美大片| 成人中心免费视频| 亚洲欧美另类中文字幕| 在线观看日韩av| 日韩经典一区二区三区| 另类专区欧美制服同性| 欧美精品一本久久男人的天堂| 国产精品一区二区三区免费视频| 欧美乱人伦中文字幕在线| 欧美国产日韩一区二区三区| 国产精品自拍视频| 国产黑人绿帽在线第一区| 精品美女永久免费视频| 中文字幕久热精品视频在线| www.国产精品一二区| 伊人伊人伊人久久| 午夜精品一区二区三区在线视频| 26uuu国产精品视频| 久久精品久久精品亚洲人| 性金发美女69hd大尺寸| 欧美人与性动交a欧美精品| 亚洲一区二区免费| 欧美日韩在线免费观看| 久久琪琪电影院| 在线日韩av观看| 国产suv精品一区二区三区88区| 久久久亚洲福利精品午夜| 国产va免费精品高清在线观看| 久久亚洲影音av资源网| 国产美女91呻吟求| 欧美亚洲一级片| 国产成人拍精品视频午夜网站| 色综合久久中文字幕综合网小说| 欧美日韩国产精品一区二区三区四区| 久久精品99久久久久久久久| 色99之美女主播在线视频| 国产亚洲精品久久| 久久激情视频免费观看| 亚洲字幕一区二区| 亚洲在线第一页| 欧美激情伊人电影| 欧美视频在线观看免费| 日韩av在线导航| 日日狠狠久久偷偷四色综合免费| 国产精品久久久久免费a∨| 最近2019免费中文字幕视频三| 欧美日本黄视频| 91精品国产综合久久香蕉最新版| 日韩亚洲在线观看| 亚洲欧美国产视频| 成人精品一区二区三区电影免费| 成人欧美在线视频| 国产日韩中文字幕| 88国产精品欧美一区二区三区| 日韩欧美高清视频| 亚洲高清免费观看高清完整版| 亚洲人精品午夜在线观看| 国产精品色悠悠| 久久免费视频网站| 欧美精品免费看| 亚洲精品国产福利| 97热在线精品视频在线观看| 精品视频久久久久久久| 色悠久久久久综合先锋影音下载| 日韩欧美在线视频免费观看| 欧美激情按摩在线| 国产伦精品免费视频| 国产日韩欧美夫妻视频在线观看| 欧美性感美女h网站在线观看免费| 亚洲视频在线看| 欧美俄罗斯乱妇| 91美女高潮出水| 国产91在线播放| 最新中文字幕亚洲| 欧美日韩人人澡狠狠躁视频| 精品国产福利在线| 国产精品欧美亚洲777777| 亚洲精品色婷婷福利天堂| 91在线色戒在线| 成人有码视频在线播放| 亚洲香蕉成人av网站在线观看| 久久99热这里只有精品国产| 亚洲精品综合精品自拍| 欧美国产日韩视频| 国产福利视频一区二区| 91精品久久久久久久久久入口| 亚洲天堂av在线播放| 欧洲中文字幕国产精品| 亚洲男人天堂九九视频| 欧美视频免费在线观看| 国产成人福利网站| 中文字幕日韩高清| 日韩欧美在线网址| 国产精品黄色影片导航在线观看|