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

首頁

怎么制作微信小程序的旋轉動畫?

seo達人

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

微信小程序被給予的能量是無窮的,在小程序發展逐漸成熟的當下,小程序開發能實現的需求越來越完善。最近小程序中有一個圖片旋轉的需求,在微信小程序上是可以通過切換多張圖片達到旋轉的效果,但微信小程序自帶的API中帶有這么一個動畫組件,因此小程序制作旋轉動畫可以使用image+Animation來實現。

首先在wxml中定義image

注意其中的animation屬性,image就由它來實現動畫。

而{{animation}}我們在js的data中定義

data: {

animation: \'\'

},

相關代碼

var _animation;

var _animationIndex

const _ANIMATION_TIME = 500;

pages {

...

onShow: function () {

_animation =wx.createAnimation({

duration:_ANIMATION_TIME,

timingFunction: \'linear\',//linear,ease,ease-in,ease-in-out,ease-out,step-start,step-end

delay: 0,

transformOrigin:\'50% 50% 0\'

})

},

/**

* 實現image旋轉動畫,每次旋轉 120*n度

*/

rotateAni: function (n){

_animation.rotate(120* (n)).step()

this.setData({

animation:_animation.export()

})

},

/**

* 開始旋轉

*/

startAnimationInterval:function () {

var that = this;

that.rotateAni(++_loadImagePathIndex); // 進行一次旋轉

_animationIntervalId =setInterval(function () {

that.rotateAni(++_loadImagePathIndex);

},  _ANIMATION_TIME); // 沒間隔_ANIMATION_TIME進行一次旋轉

},

/**

* 停止旋轉

*/

stopAnimationInterval:function () {

if (_animationIntervalId> 0) {

clearInterval(_animationIntervalId);

_animationIntervalId= 0;

}

},

}

微信自帶的Animation可以實現一次動畫,然后可以通過setInterval來達到不斷旋轉的目的,在使用時,控制startAnimationInterval和stopAnimationInterval即可。


微信小程序怎么制作旋轉動畫

微信小程序視頻教程,盡在即速學院。


在使用animation時,會發現有時候出現旋轉速度很快或者反向旋轉再正向旋轉的清空,這都是由于rotate的值設置有問題。

1、rotate的值應該是上一次結束時的值,

2、如果設置了全局變量,記得在oncreate時初始化,不然第二次打開同一頁面會有問題。

注意事項:

這里為什么不直接給_animation.rotate(120 * (n)).step()設置一個足夠大的值,原因有兩點:

1、我們需要便利的控制開始和停止,

2、animation在小程序進入后臺后,會持續運行,占用手機內存和cpu,而小程序依賴于微信,在iphone上會導致微信被終止運行

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

css布局——flex布局

seo達人

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

Flex 是 Flexible Box 的縮寫,意為"彈性布局",用來為盒狀模型提供最大的靈活性。
任何一個容器都可以指定為 Flex 布局。
.box{ display: flex;}
行內元素也可以使用 Flex 布局。
.box{ display: inline-flex;}
Webkit 內核的瀏覽器display: -webkit-flex;
設為 Flex 布局以后,子元素的floatclearvertical-align屬性將失效。

圖片


容器屬性:

flex-direction:(排列方向橫向還是縱向)
row
(默認值):主軸為水平方向,起點在左端。
row-reverse
:主軸為水平方向,起點在右端。
column
:主軸為垂直方向,起點在上沿。
column-reverse
:主軸為垂直方向,起點在下沿。

圖片

flex-wrap:(如何換行)
nowrap
(默認):不換行。

wrap
:換行,第一行在上方。

wrap-reverse
:換行,第一行在下方。


flex-flow:(
flex-directionflex-wrap簡稱,默認值為row nowrap

justify-content:(橫向對齊方式)
flex-start(默認值):左對齊
flex-end
:右對齊
center
: 居中
space-between
:兩端對齊,項目之間的間隔都相等
space-around:每個項目兩側的間隔相等。所以,項目之間的間隔比項目與邊框的間隔大一倍。

圖片

align-items:(縱向對齊方式)
flex-start:交叉軸的起點對齊。
flex-end
:交叉軸的終點對齊。
center
:交叉軸的中點對齊。
baseline
: 項目的第一行文字的基線對齊
stretch(默認值):如果項目未設置高度或設為auto,將占滿整個容器的高度。

圖片

align-content:(多根軸線的對齊方式)
flex-start
:與交叉軸的起點對齊。
flex-end
:與交叉軸的終點對齊。
center
:與交叉軸的中點對齊。
space-between
:與交叉軸兩端對齊,軸線之間的間隔平均分布。
space-around
:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍
stretch(默認值):軸線占滿整個交叉軸。

圖片

 
box屬性:


order:(排列順序)
數值越小,排列越靠前,默認為0。

flex-grow:(剩余空間分配,box放大比例,默認為0,即如果存在剩余空間,也不放大)

圖片

flex-shrink:(box縮小比例,默認為1,即如果空間不足,該項目將縮小)

圖片

flex-basis:(box占據的寬度或高度)

圖片

align-self:(單個box的對齊方式,與其他box對齊方式)

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

談談BFC

高勁

一、什么是BFC
       BFC(block formatting context)簡單來說,BFC 就是一種屬性,這種屬性會影響著元素的定位以及與其兄弟元素之間的相互作用。
    中文常譯為塊級格式化上下文。是 W3C CSS 2.1 規范中的一個概念, 從樣式上看,具有 BFC 的元素與普通的容器沒有什么區別,但是從功能上,具有 BFC 的元素可以看作是隔離了的獨立容器,容器里面的元素不會在布局上影響到外面的元素,并且 BFC 具有普通容器沒有的一些特性,它決定了元素如何對其內容進行定位,以及與其他元素的關系和相互作用。

、如何觸發 BFC

      上面介紹了 BFC 的定義,那么如何觸發 BFC 呢?
    滿足下面任一條件的元素,會觸發為 BFC :
    1、浮動元素,float 除 none 以外的值
    2、絕對定位元素,position(absolute,fixed)
    3、display 為以下其中之一的值 inline-blocks,table-cells,table-captions
    4、overflow 除了 visible 以外的值(hidden,auto,scroll)

BFC布局與普通文檔流布局區別      
    普通文檔流布局規則
    1.浮動的元素是不會被父級計算高度
    2.非浮動元素會覆蓋浮動元素的位置
    3.margin會傳遞給父級
    4.兩個相鄰元素上下margin會重疊

    BFC布局規則
    1.浮動的元素會被父級計算高度(父級觸發了BFC)
    2.非浮動元素不會覆蓋浮動元素位置(非浮動元素觸發了BFC)
    3.margin不會傳遞給父級(父級觸發了BFC)

    4.兩個相鄰元素上下margin會重疊(給其中一個元素增加一個父級,然后讓他的父級觸發BFC)

   下面來說一下BFC的實際使用場景
   場景1:解決子盒子都浮動時 父盒子高度不參與計算問題
    <style>
      .far {
         border: 10px solid pink;
         width: 300px;
     }
      .child {
         border: 10px solid yellowgreen;
         width:100px;
         height: 100px;
         float: left;
    }
     .far{
         overflow: hidden;
    }
    </style>
    <body>
        <div class="far">
             <div class="child"></div>
             <div class="child"></div>
        </div>
    </body>

    根據overflow 除了 visible 以外的值(hidden,auto,scroll)就會觸發BFC的原則 計算BFC高度時 ,floatbox也參與其中。


    場景2:box垂直方向的距離 會由margin來決定 相鄰兩個盒子之間margin會重疊 ,這就是margin上下間值合并的原因

    <style>
    p {
        color: pink;
        background: #fcc;
        width: 200px;
        height:100px;
        text-align:center;
        margin: 100px;
    }
    </style>
    <body>
       <p></p>
       <p></p>
    </body>

    要解決這個問題我們可以在p外面包裹一層容器,并觸發該容器生成一個BFC。那么兩個P便不屬于同一個BFC,就不會發生margin重疊了,解決代碼如下。
    <style>
       .box {
          overflow: hidden;
       }
       p {
          background: green;
          width: 200px;
          height: 200px;
          margin: 100px;
      }
    </style>
    <body>
       <p></p>
       <div class="box">
           <p></p>
       </div>

    </body>

    場景3:實現左側固定右側自適應等類似布局
    <style>
        .out{
            border: 1px solid red;
            height: 200px;
        }
        .left{
            width: 200px;
            height: 150px;
            background-color: green;
            float: left;
        }
        .right{
            background-color: pink;
            height: 250px;
            overflow: hidden;
        }
      </style>
      <body>
     <div class="out">
        <div class="left"></div>
        <div class="right"></div>
      </div>

使用three.js的著色器通道渲染地球模型

seo達人

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

我們都知道,three.js庫里面內置了很多著色器通道對象供我們渲染場景,本文將對EffectComposer、RenderPass、FilmPass這三個通道進行學習和實現:

1.RenderPass這個通道會在當前場景(scene)和攝像機(camera)的基礎上渲染出一個新場景,新建:

[javascript] view plain copy
  1. let renderPass = new THREE.RenderPass(scene, camera);  

2.FilmPass這個通道通過掃描線和失真模擬電視屏幕效果,實現的效果超有時代感,新建:

[javascript] view plain copy
  1. /*四個參數分別為粗糙程度,掃描線強度,掃描線數量,是否轉換為灰度圖*/  
  2. let effectFilm = new THREE.FilmPass(0.8, 0.325, 256, false);  
  3. //將渲染結果輸出到屏幕  
  4. effectFilm.renderToScreen = true;  

3.EffectComposer可以理解為著色器通道容器,著色器通道按照先后順序添加進來并執行,新建:

[javascript] view plain copy
  1. /*渲染效果組合器,每個通道都按照傳入的順序執行*/  
  2. let composer = new THREE.EffectComposer(renderer);  
  3. composer.addPass(renderPass);  
  4. composer.addPass(effectFilm);  

本文實現的demo基于three.js_r86(請自行下載),代碼所用js文件和圖片都在下載的那個包里面,請讀者自行引用。

實現效果:



代碼:

[html] view plain copy
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>shader_2_earth</title>  
  6.     <style>  
  7.         body{  
  8.             margin: 0;  
  9.             overflow: hidden;  
  10.         }  
  11.     </style>  
  12. </head>  
  13. <body>  
  14. <script src="build/three.js"></script>  
  15. <script src="js/libs/stats.min.js"></script>  
  16. <script src="js/libs/dat.gui.min.js"></script>  
  17. <script src="js/controls/OrbitControls.js"></script>  
  18. <script src="js/Detector.js"></script>  
  19.   
  20. <script src="js/postprocessing/EffectComposer.js"></script>  
  21. <script src="js/postprocessing/ShaderPass.js"></script>  
  22. <script src="js/postprocessing/MaskPass.js"></script>  
  23. <script src="js/postprocessing/FilmPass.js"></script>  
  24. <script src="js/postprocessing/BloomPass.js"></script>  
  25. <script src="js/postprocessing/RenderPass.js"></script>  
  26.   
  27. <script src="js/shaders/CopyShader.js"></script>  
  28. <script src="js/shaders/FilmShader.js"></script>  
  29.   
  30. <div id="stats"></div>  
  31. <div id="container"></div>  
  32. <script>  
  33.     //檢測webgl的兼容性  
  34.    if(!Detector.webgl) Detector.addGetWebGLMessage();  
  35.   
  36.    let scene;  
  37.    let camera, renderer, sphere, controls, stats;  
  38.    let ambientLight, spotLight;  
  39.    let composer;  
  40.    let clock;  
  41.   
  42.    main();  
  43.    render();  
  44.   
  45.    function main() {  
  46.        scene = new THREE.Scene();  
  47.   
  48.        camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 1000);  
  49.        camera.position.set(-10, 15, 25);  
  50.        camera.lookAt(new THREE.Vector3(0, 0, 0));  
  51.   
  52.        renderer = new THREE.WebGLRenderer({antialias:true});  
  53.        renderer.setClearColor(new THREE.Color(0,0,0));  
  54.        renderer.setSize(window.innerWidth, window.innerHeight);  
  55.        renderer.shadowMapEnabled = true;  
  56.   
  57.        controls = new THREE.OrbitControls(camera);  
  58.        controls.autoRotate = false;  
  59.   
  60.        clock = new THREE.Clock();  
  61.   
  62.        ambientLight = new THREE.AmbientLight(0x181818);  
  63.        scene.add(ambientLight);  
  64.   
  65.        spotLight = new THREE.SpotLight(0xffffff);  
  66.        spotLight.position.set(550, 100, 550);  
  67.        spotLight.intensity = 0.6;  
  68.        scene.add(spotLight);  
  69.   
  70.        //創建地球  
  71.        sphere = createMesh(new THREE.SphereGeometry(10, 60, 60));  
  72.        scene.add(sphere);  
  73.   
  74.        document.getElementById("container").appendChild(renderer.domElement);  
  75.   
  76.        /**  
  77.         * 添加渲染通道  
  78.         */  
  79.        //在當前場景和攝像機的基礎上渲染一個新場景  
  80.        let renderPass = new THREE.RenderPass(scene, camera);  
  81.        //通過掃描線和失真來實現模擬電視屏幕的效果  
  82.        let effectFilm = new THREE.FilmPass(0.8, 0.325, 256, false);  
  83.        //將渲染結果輸出到屏幕  
  84.        effectFilm.renderToScreen = true;  
  85.   
  86.        //渲染效果組合器,每個通道都按照傳入的順序執行  
  87.        composer = new THREE.EffectComposer(renderer);  
  88.        composer.addPass(renderPass);  
  89.        composer.addPass(effectFilm);  
  90.   
  91.        //菜單欄元素  
  92.        let guiFields = {  
  93.            "掃描線數量": 256,  
  94.            "灰度圖像": false,  
  95.            "掃描線強度": 0.3,  
  96.            "粗糙程度": 0.8,  
  97.            "updateEffectFilm": function () {  
  98.                effectFilm.uniforms.grayscale.value = guiFields.灰度圖像;  
  99.                effectFilm.uniforms.nIntensity.value = guiFields.粗糙程度;  
  100.                effectFilm.uniforms.sIntensity.value = guiFields.掃描線強度;  
  101.                effectFilm.uniforms.sCount.value = guiFields.掃描線數量;  
  102.            }  
  103.        };  
  104.   
  105.        //新建一個菜單欄  
  106.        let gui = new dat.GUI();  
  107.        gui.add(guiFields, "掃描線數量", 0, 2048).onChange(guiFields.updateEffectFilm);  
  108.        gui.add(guiFields, "掃描線強度", 0, 1).onChange(guiFields.updateEffectFilm);  
  109.        gui.add(guiFields, "粗糙程度", 0, 3).onChange(guiFields.updateEffectFilm);  
  110.        gui.add(guiFields, "灰度圖像").onChange(guiFields.updateEffectFilm);  
  111.   
  112.        stats = initStats();  
  113.    }  
  114.   
  115.    //創建一個Mesh  
  116.    function createMesh(geometry) {  
  117.   
  118.        //初始化紋理加載器  
  119.        let textureLoader = new THREE.TextureLoader();  
  120.        //加載圖片  
  121.        let uniforms = {  
  122.            planetTexture:{value:textureLoader.load("textures/planets/earth_atmos_2048.jpg")},  
  123.            specularTexture:{value:textureLoader.load("textures/planets/earth_specular_2048.jpg")},  
  124.            normalTexture:{value:textureLoader.load("textures/planets/earth_normal_2048.jpg")}  
  125.        };  
  126.   
  127.        //創建phong材料,并進行相應圖片的貼圖  
  128.        let planetMaterial = new THREE.MeshPhongMaterial();  
  129.        planetMaterial.specularMap = uniforms.specularTexture.value;  
  130.        planetMaterial.specular = new THREE.Color(0x4444aa);  
  131.   
  132.        planetMaterial.normalMap = uniforms.normalTexture.value;  
  133.        planetMaterial.map = uniforms.planetTexture.value;  
  134.   
  135.        //新建一個mesh  
  136.        let mesh = new THREE.SceneUtils.createMultiMaterialObject(geometry, [planetMaterial]);  
  137.   
  138.        return mesh;  
  139.    }  
  140.   
  141.    //渲染更新場景  
  142.   
  143.    function render() {  
  144.        stats.update();  
  145.        let delta = clock.getDelta();  
  146.        controls.update(delta);  
  147.        sphere.rotation.y += 0.002;  
  148.        requestAnimationFrame(render);  
  149.   
  150.        //沒有著色器通道系統默認為WebGLRenderer.render  
  151.        //使用著色器通道后,應使用使用composer.render  
  152.        composer.render(delta);  
  153.    }  
  154.   
  155.    //左上角幀顯示  
  156.    function initStats() {  
  157.        let stats = new Stats();  
  158.        stats.setMode(0);  
  159.        stats.domElement.style.position = 'absolute';  
  160.        stats.domElement.style.left = '0px';  
  161.        stats.domElement.style.top = '0px';  
  162.        document.getElementById("stats").appendChild(stats.domElement);  
  163.   
  164.        return stats;  
  165.    }  
  166. </script>  
  167. </body>  
  168. </html>  
藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

8個非常個性化的CSS3單/復選框

高勁

       單選框和復選框在網頁表單中應用十分廣泛,但是瀏覽器默認自帶的單選框和復選框樣式不僅不統一,而且大多都比較簡單丑陋。本文給大家介紹了一些基于CSS3的個性化單選框和復選框,一些選中動畫是基于jQuery的,你可以挑選喜歡的單選框和復選框應用到自己的網頁中去,非常方便。

         1、jQuery超級個性化的單線框和復選框

       今天要分享的也是一個非常個性化的單選框和復選框插件,顏色你可以自己定義。

      56a706650001cc8206100418.png

                   在線演示  源碼下載

         2、CSS3漂亮的自定義Checkbox復選框 9款迷人樣式

       今天我們來分享一款9款樣式迷人的CSS3漂亮的自定義checkbox復選框。這幾款復選框樣式很豐富,使用起來也比較方便。


56a70c3e0001aede05880266.jpg

                    在線演示  源碼下載

        3、CSS3自定義美化復選框Checkbox組合

       今天我們要來分享一組非常漂亮的CSS3自定義復選框checkbox,每一個checkbox都有其各自的特點。有幾款checkbox在選中的情況下還會出現動畫效果,非常不錯的CSS3自定義美化checkbox組合。

56a70cbb00019efb06100379.png

                在線演示   源碼下載

       4、jQuery實現美化版的單選框和復選框

       今天這款是利用jQuery實現的美化版單選框和復選框,樣式風格非常簡潔清爽,是一款很不錯的jQuery按鈕插件。

56a70e01000161c706100252.png

                          在線演示  源碼下載

       5、純CSS3 3D按鈕 按鈕酷似牛奶般剔透

       CSS3按鈕一般都可以設計的非常漂亮,利用投影、漸變等CSS3屬性可以把按鈕渲染的十分動感。今天分享的這款CSS3按鈕外觀非常特別,它看上去酷似晶瑩剔透的牛奶,而且在點擊按鈕時出現3D效果的動畫,按鈕按下時,按鈕會輕輕的彈動一下,非常逼真。

56a70e1000013a8d05880281.jpg

                 在線演示  源碼下載

        6、HTML5/CSS3開關按鈕 立體3D按鈕

        今天介紹的這款HTML5/CSS3開關切換按鈕是利用純CSS3的,代碼非常簡單,3D效果也還可以。

56a70e1b0001142f08000557.gif

                  在下演示  源碼下載

         7、CSS3自定義發光Radiobox單選框

       今天我們要來分享一款CSS3實現的自定義發光radiobox單選框插件,該radiobox選中時也有滑塊的動畫。

56a70e2d0001b19b05880259.jpg

                   在線演示  源碼下載

      8、CSS3實現自定義Checkbox動畫

      今天我們要再來分享一款CSS3自定義checkbox,而且這款checkbox還帶有動畫效果,當你選中checkbox的時候,會以動畫的方式打上一個大大的勾。

56a70e350001219c05880215.jpg 

                   在線演示  源碼下載



         以上就是8個非常個性化的CSS3單/復選框,希望對你有所幫助。

       本文鏈接:http://www.codeceo.com/article/10-personal-css3-radiobox-checkbox.html







include指令標記與動作標記詳解

seo達人

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

一.include指令標記

include指令標記用于把JSP文件,HTML網文文件等文件靜態嵌入當前JSP網頁中,語法如下:

[html] view plain copy
  1. <%@include file="xxURL"%>  

靜態嵌入就是“先包含后處理”在編譯階段完成對文件嵌入,即先將當前JSP頁面與被嵌入文件合并成一個新的JSP頁面

eg:

[html] view plain copy
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="ISO-8859-1"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.         <font color="red"size=5>  
  11.             lalla  
  12.         </font>  
  13. </body>  
  14. </html>  
            
[html] view plain copy
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  7. <title>include動作標記</title>  
  8. </head>  
  9. <body>  
  10.     <br>  
  11.         <jsp:include page="demo.jsp"/>  
  12.     </br>  
  13. </body>  
  14. </html>  
運行結果如下:


二.include動作標記:

動作標記是將JSP等文件動態嵌入當前JSP網頁中,語法如下:
[html] view plain copy
  1. <jsp:include page="xxURL"/>  

[html] view plain copy
  1. <jsp:include page="xxURL">  
  2.    子標記  
  3. <jsp:include/>  

動態嵌入就是“先處理后包含”在運行階段完成對文件嵌入,即在把JSP頁面轉譯為JAVA文件時,并不合并兩個頁面。

eg:

[html] view plain copy
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="ISO-8859-1"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.         <font color="red"size=5>  
  11.             lalla  
  12.         </font>  
  13. </body>  
  14. </html>  

[html] view plain copy
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  7. <title>include動作標記</title>  
  8. </head>  
  9. <body>  
  10.     <br>  
  11.         <jsp:include page="demo.jsp"/>  
  12.     </br>  
  13. </body>  
  14. </html>  

運行結果:

總結:靜態嵌入中嵌入頁面與原頁面合并了,動態嵌入則還沒有。

動態嵌入與靜態嵌入相比較,動態嵌入執行速度稍慢,但是靈活性較高。

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


20個最常用的javascript方法函數收集

高勁

     收集了一些比較常用的JavaScript函數

     1、字符串長度截取函數

     function cutstr(str,len){

           var temp,icount = 0,patrn = /[^x00-\xff]/,strre=" ";

           for(var i= 0;i<str.length;i++) {

                if (icount<len-1){

                    temp =str.substr(i,1);

                    if (patrn.exec(temp)==null){

                       icount =icount+1    

                  }else {

                     icount =icount+2

                 }

                    strre+=temp

              } else {

                   break;

               }

          }

           returen strre+"...";

      }

     2、替換全部

     String.prototype.replaceAll = function(s1,s2) {

            return this.replace(new RegExp(s1,"gm"),s2);

     }

     3、清除空格

     function trim = function() {

            var reExtraSpace = /^\s*(.*?)\s+$/;

            return this.replace(reExtraSpace,"$1");

     }

     4、清除左空格/右空格

      function  ltrim(s){

            return s.replace(/^(\s*| *)/,"");

      }

     function rtrim(s) {

           return s.replace(/(\s*| *)$/,"");

      }

      5、判斷是否以某個字符串開頭

      String.prototype.startWith = function(s) {

            return this.indexOf(s)==0;

      }

       6、判斷是否以某個字符串結束 

      String.prototype.endWith = function(s) {

            var d = this.length - s.length;

            return (d >= 0 && this.lastIndexOf(s)==d);

        }

        7、轉義HTML標簽

       function HtmlEncode(text) {

             return text.replace(/&/g,'&').replace(/\"/g,' " ').replace(/</g,'<').replace(/>/g,'>');

       }

        8、時間日期格式轉換

       Date.prototype.Format = function(formatStr){

             var str = formatStr;

             var week =['日','一','二','三','四','五','六'];

             str = str.replace(/yyyy|YYYY/,this.getFullYear());

             str = str.replace(/yy|YY,(this.getYear()%100)>9?(this.getYear()%100).toString():'0'+(this.getYear()%100));

             str = str.replace(/MM/,(this.getMonth()+1)>9?(this.getMonth()+1).toString():'0'+this.getMonth()+1));

             str = str.replace(/w|W/g,week[(this.getDay()];

             str = str.replace(/dd|DD/,(this.getDate()>9?this.getDate().toString():'0'+this.getDate());

             str = str.replace(/d|D/g,this.getDate());

             str = str.replace(/hh|HH/,this.getHours()>9?(this.getHours().toString():'0'+this.getHours());

             str = str.replace(/h|H/g,this.getHours());

             str = str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0'+this.getMinutes());

             str = str.replace(/m/g,this.getMinutes());

             str = str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0'+this.getgetSeconds());

             str = str.replace(/s|S/g,this.getSeconds());

            return str;

        }

        9、判斷是否為數字類型

        function isDigit (value){

             var patrn = /^[0-9]*$/;

             if (patrn.exec(value) == null || value=="" ) {

                   return false;  

             } else {

                  return true;

            }

        }

       10、設置cookie

       function setCookie(name,value,Hours){

              var d =new Date();

              var offset =8;

              var utc = d.getTime()+(d.getTimezoneOffset()*60000);

              var nd = utc+(3600000*offset);

              var exp = new Date(nd);

              exp.setTime(exp.getTime()+Hours*60*60*1000);

              document.cookie = name+"="+escape(value)+";domain=360doc.com;"

       }

       獲取cookie值

       function getCookie(name){

             var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));

             if (arr!=null){

               return unescape(arr[2]);

            }else {

             return null;

             }

       }

      11、加入收藏夾

       function AddFavorite(sURL,sTitle) {

            try{

               window.external.addFavorite(sURL,sTitle);

         }catch(e){

           try{

               window.sidebar.addPanel(sTitle,sURL,"");

            }catch(e){

                  alert("加入收藏夾失敗,請使用Ctrl+D進行添加");

             }

          }

       }

      12、設為首頁

      function setHomepage(){

             if(document.all){

               document.body.style.behavior='url(#default#homepage)';

               document.body.setHomePage('http://w3cboy.com')

         }else if (window.sidebar){

              if(window.netscape){

                 try{

                    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")

              }catch(e){

                 alert("該操作被瀏覽器拒絕,如果想啟用該功能,請在地址欄內輸入about:config,然后將

                 項 signed.applets.codebase_principal_support 值該為true");

             }

           }

               var prefs = Components.classes['@mozilla.org/preferences- service;1'].getService(Components.interfaces.nsIPrefBranch); 

               prefs.setCharPref('browser.startup.homepage', 'http://w3cboy.com');

         }

       }

       13、加載樣式文件

             function LoadStyle(url) {

                 try { 

                     document.createStyleSheet(url); 

                    } 

                   catch(e) { 

                      var cssLink = document.createElement('link');

                      cssLink.rel = 'stylesheet'; 

                      cssLink.type = 'text/css'; 

                      cssLink.href = url; 

                     var head = document.getElementsByTagName('head')[0]; 

                     head.appendChild(cssLink);

                    } 

                 }

            14、返回腳本內容

            function evalscript(s) { 

                   if(s.indexOf('<script') == -1) return s; 

                   var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;

                   var arr = []; 

                   while(arr = p.exec(s)) { 

                   var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i; 

                   var arr1 = []; 

                   arr1 = p1.exec(arr[0]); 

                   if(arr1) { 

                         appendscript(arr1[1], '', arr1[2], arr1[3]);

                    } else { 

                         p1 = /<script(.*?)>([^\x00]+?)<\/script>/i; 

                         arr1 = p1.exec(arr[0]); 

                         appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);

                          } 

                       } 

                      return s; 

                  }

            15、清除腳本內容

             function stripscript(s) { 

                      return s.replace(/<script.*?>.*?<\/script>/ig, ''); 

              }

              16、動態加載腳本文件

             function appendscript(src, text, reload, charset) {

                      var id = hash(src + text); 

                      if(!reload && in_array(id, evalscripts)) return; 

                      if(reload && $(id)) { $(id).parentNode.removeChild($(id));
                }

                evalscripts.push(id);

                var scriptNode = document.createElement("script"); 

                scriptNode.type = "text/javascript"; 

                scriptNode.id = id; 

                scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset); 

               try { 

                    if(src) { 

                           scriptNode.src = src; 

                           scriptNode.onloadDone = false; 

                           scriptNode.onload = function () { 

                                       scriptNode.onloadDone = true;

                                      JSLOADED[src] = 1; 

                            }; 

                         scriptNode.onreadystatechange = function () {

                         if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) { 

                                   scriptNode.onloadDone = true; JSLOADED[src] = 1; 

                                  } 

                               }; 

                          } else if(text){ 

                                scriptNode.text = text; 

                         } 

                         document.getElementsByTagName('head')[0].appendChild(scriptNode); 

                     } catch(e) {} 

                   }

           17、返回按ID檢索的元素對象
           
function $(id) {

                    return !id ? null : document.getElementById(id); 

             }

           18、跨瀏覽器綁定事件

           function addEventSamp(obj,evt,fn){ 

                    if(!oTarget){

                           return;

                     } if (obj.addEventListener) { 

                              obj.addEventListener(evt, fn, false);

                         }else if(obj.attachEvent){ 

                             obj.attachEvent('on'+evt,fn); 

                           }else{

                               oTarget["on" + sEvtType] = fn; 

                            }

                    }

             19、跨瀏覽器刪除事件

                function delEvt(obj,evt,fn){ if(!obj){

                        return;

               } if(obj.addEventListener){

                      obj.addEventListener(evt,fn,false); 

                 }else if(oTarget.attachEvent){ 

                    obj.attachEvent("on" + evt,fn); 

                 }else{ 

                     obj["on" + evt] = fn; 

                  } 

               }

            20、元素添加on方法

            Element.prototype.on = Element.prototype.addEventListener;

             NodeList.prototype.on = function (event, fn) {、

                     []['forEach'].call(this, function (el) { 

                           el.on(event, fn); 

                      });

                      return this; 

               };






px、em、rem、%、vw、vh、vm這些單位的區別

seo達人

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

1.背景介紹


我們為什么要選擇合適的網頁設計單位


隨著Web的發展,對新的解決方案的需求也會繼續增大,對網頁的要求更高。


網頁設計單位是涉及到我們布局的效果,使用不同的單位會對最終的demo,會有影響。


現在都是要求響應式設計,需要適配各種設備,電腦,手機,平板。如果單位不合適,可能在這個設備顯示良好,那個設備就會打亂布局。


所以需要我們選擇合適的單位來進行開發,設計。
2.知識剖析


1、px


px就是pixel的縮寫,意為像素。px就是設備或者圖片最小的一個點,比如常常聽到的電腦像素是1024x768的,表示的是水平方向是1024個像素點,垂直方向是768個像素點。


是我們網頁設計常用的單位,也是基本單位。通過px可以設置固定的布局或者元素大小,缺點是沒有彈性。


特點是1. em的值并不是固定的; 2. em會繼承父級元素的字體大小。




2、em


參考物是父元素的font-size,具有繼承的特點。如果自身定義了font-size按自身來計算(瀏覽器默認字體是16px),整個頁面內1em不是一個固定的值。
特點是1. em的值并不是固定的; 2. em會繼承父級元素的字體大小。
3、rem


rem是相對于根元素html,這樣就意味著,我們只需要在根元素確定一個參考值,可以設計HTML為大小為10px,到時設置1.2rem就是12px.以此類推。


優點是,只需要設置根目錄的大小就可以把整個頁面的成比例的調好。


4、%


一般來說就是相對于父元素的,


1、對于普通定位元素就是我們理解的父元素 2、對于position: absolute;的元素是相對于已定位的父元素 3、對于position: fixed;的元素是相對于ViewPort(可視窗口),
5、vw


css3新單位,view width的簡寫,是指可視窗口的寬度。假如寬度是1200px的話。那10vw就是120px


舉個例子:瀏覽器寬度1200px, 1 vw = 1200px/100 = 12 px。


6、vh


css3新單位,view height的簡寫,是指可視窗口的高度。假如高度是1200px的話。那10vh就是120px


舉個例子:瀏覽器高度900px, 1 vh = 900px/100 = 9 px。


7、vm


css3新單位,相對于視口的寬度或高度中較小的那個。其中最小的那個被均分為100單位的vm 舉個例子:瀏覽器高度900px,寬度1200px,取最小的瀏覽器高度,1 vm = 900px/100 = 9 px。


兼容性太差 ,現在基本上沒人用,我試了一下Chrome就用不了。


3.常見問題


假如使用em來設置文字大小要注意什么?


4.解決方案


注意父元素的字體大小,因為em是根據父元素的大小來設置的。比如同樣是1.5em,要是父元素是20,那1.5em就是30px.要是父元素是30px,1.5em就是45px.


特別是在多重div嵌套里面更要注意。


5.擴展思考


css還有哪些長度單位?


in:寸


cm:厘米


mm:毫米


t:point,大約1/72寸


pc:pica,大約6pt,1/6寸


6.更多問題
1.pc pt ch一般用在什么場景?
這些我們網頁設計基本上用不到,在排版上會有用處。


2.如何使 1rem=10px
在設置HTML{font-size:62.5%;}即可


3.如果父元素沒有指定高度,那么子元素的百分比的高度是多少?
會按照子元素的實際高度,設置百分比已經沒有效果了。
藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務


一份最詳盡全面的UI界面切圖命名規范

高勁

      關于UI界面的切圖命名規范,U妹覺得關鍵是在于團隊能夠有一個統一的規則,所以這里只介紹一種通用的命名規則,當然大家也可以根據自己的實際情況去制定,這里只提供一種方法與思路,僅供參考。

      規范的命名方式可以提高開發人員的的開發效率和整個開發團隊的友好合作。U妹覺得要盡可能用最少的字符而又能完整的表達標識符的含義。

      一、切圖命名英文縮寫的3個原則

      1.較短的單詞可以通過去掉“元音”形成縮寫

       2.較長的單詞可去單詞的頭部幾個字母形成縮寫

       3.還有一些約定成俗的英文單詞縮寫

      二、命名規則

          模塊_類別_功能_狀態.png

        U妹舉個例子:nav_button_search_default.png

        釋義為:導航_按鈕_搜索_默認.png

     啟動界面

        啟動圖片 default.png

         啟動logo default.png

         如:default.png\defoult@2x.png\default-568@2x.png

  登錄界面

   登錄背景    login_bg.png

         登錄logo   login_logo.png 

         輸入框       login_input.png 

         輸入框選中狀態       login_input_pre.png

         登錄按鈕       login_btn.png

         登錄按鈕選中狀態  login_btn_pre.png

     導航欄按鈕 (nav) 命名 

         nav_功能描述.png

         如:nav_menu.png\nav_menu_pre.png(同按鈕選中前后兩種狀態命名 )

     按鈕命名(btn可重復使用按鈕)

        一般   normal   btn_xxx_normal.png

        點擊  highlight btn_xxx_highlight.png

        不能點擊  disabled  btn_xxx_disable.png

        按下  pressed btn_xxx_pressed.png

        選中  selected btn_xxx_selected.png 做為復數選擇出現機會不高

        btn_功能屬性或色彩均可.png

        如:btn_blue.png\btn_blue.9.png   藍色按鈕

    其他命名

       圖標 icon_xxx.png

       圖片 pic_xxx.png或是img_xxx.png

       照片 pho_xxx.png

       左側導航 命名 leftbar_功能描述.png

       如:leftbar_info.png\leftbar_info_pre.png   個人中心 

   底部選項卡按鈕(TabBar)

      命名 Tab_功能描述.png  

       如:tab_set.Png\nav_set_pre.png  設置 

   主頁命名

      命名 home_功能屬性+描述.png

       如:home_menu_recommended.png  熱門推薦 

       ps:描述可用英文或拼間開頭字母組合等

   列表頁命名規則

      命名 List_功能屬性+描述.png

       如:list_menu_collect.png  列表頁收藏按鈕

   UI文件命名規范常用詞

      常用狀態 

       正常 normat

       按下 pressed 

       選中 selected

       禁用 disabled

       已訪問 visited

       懸停 hover

    控件&部件

       控件:較獨立的可操作界面元素 

        部件:描述屬于某控件一部分

        按鈕(可點) Btn

       圖標 Icon不可點、非點擊主體、圖案部件

       標記 Sign  列表

       List  菜單 Menu 

       視圖 View

       面板 Panel

       薄板 Sheet

       底部彈出菜單 欄 Bar 

       狀態欄 StatusBar

       導航欄 NaviBar

       標簽欄  TabBar

       工具欄 ToolBar

       切換開關 Switch

       滑動器 Slider

       單選框 Radio

       復選框 CheckBox

       背景 Bg

       蒙版、遮罩 Mask

       收藏 collect

       評論 comment

       廣告 ad

       時間 time

       音頻 audio

       視頻 viedio

       不喜歡 dilike

       用戶 user

       首頁 hone

       排名 ranked

       搜索 search

       標志 logo

       進度條 progress bar

       默認圖片 def_

       分隔圖片 seg_

       選擇 sel_

       關閉 close

       返回 back

       編輯 eidt

       內容 content

       左  中  右 left  center   right

       提示信息 msg

       個人資料 porfile

       彈出 pop

       刪除 delete

       下載 download

       登錄 login

       注冊 regsiter

       標題title

       注釋 note

       鏈接 link

       圖片 image(img)

       刷新 refresh

   常用補充描述

      頂部 Top 

       中間 Middle 

       底部 Bottom 

       第一 First 

       第二 Second

       最后 Last

       頁頭 Header

       頁腳  Footer 







 







      


 

      



Java跨域問題的解決方案及axios的跨域請求方法封裝

seo達人

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

原因

出于安全考慮,瀏覽器有一個同源策略。瀏覽器中,異步請求的地址與目標地址的協議、域名和端口號三者與當前有不同,就屬于跨域請求。

限制跨域訪問是瀏覽器的一個安全策略,因為如果沒有這個策略,那么就有被跨站攻擊的危險。比如,攻擊者在自己的網站A放置一個表單,這個表單發起DELETE請求,刪除某個用戶在B網站上的個人資料。如果沒有同源策略保護,那么在同一個瀏覽器內,如果用戶已經登錄了B網站,這個刪除的請求就會被接受,導致在用戶不知情的情況下自己在B網站中的資料被刪除。

解決方式

瀏覽器的同源策略提升了安全性,但是給需要在不同域名下開發的開發者帶來了跨域問題。

解決跨域的問題主要有: 
jsonp和cors。jsonp是利用 script 標簽可以跨域加載的特性而創造出來的一種非正式的跨域解決方案。在實際開發中,推薦使用cors,即在服務端返回時加入允許跨域的請求頭,允許指定域名的跨域訪問。

千萬要小心!這種直接加 * 號的做法是相當危險的,千萬別這么做!

response.addHeader("Access-Control-Allow-Origin", "*"); 
  • 1

正確的做法:

1. 創建一個 Filter 類

/**
 * 使用Filter的方式解決跨域問題
 */ public class CorsFilter implements Filter { private static final List<String> ALLOW_ORIGINS = Config.getListString("allowOrigins", ","); private static final String REQUEST_OPTIONS = "OPTIONS"; @Override public void init(FilterConfig filterConfig) throws ServletException {
    } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String orgHeader = request.getHeader(HttpHeaders.ORIGIN); if (orgHeader != null && ALLOW_ORIGINS.contains(orgHeader)) { // 允許的跨域的域名 response.addHeader("Access-Control-Allow-Origin", orgHeader); // 允許攜帶 cookies 等認證信息 response.addHeader("Access-Control-Allow-Credentials", "true"); // 允許跨域的方法 response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PATCH, PUT, HEAD"); // 允許跨域請求攜帶的請求頭 response.addHeader("Access-Control-Allow-Headers", "Content-Type, Content-Length, Authorization, Accept, X-Requested-With"); // 返回結果可以用于緩存的最長時間,單位是秒。-1表示禁用 response.addHeader("Access-Control-Max-Age", "3600"); // 跨域預檢請求,直接返回 if (REQUEST_OPTIONS.equalsIgnoreCase(request.getMethod())) { return;
            }
        }
        filterChain.doFilter(request, response);
    } @Override public void destroy() {

    }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

2. 在 web.xml 的最前面注冊這個 Filter

<filter> <filter-name>corsfilter</filter-name> <filter-class>com.bj58.crm.plus.filter.CorsFilter</filter-class> </filter> <filter-mapping> <filter-name>corsfilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

前端使用 axios 可以先進行封裝

http-util.js

let axios = require("axios"); let qs = require("qs");
axios.defaults.withCredentials = true;
axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; function post(url, param) { return axios.post(url, qs.stringify(param))
} function get(url, param) { axios.get(url, {params: param})
}

export default {
  get,
  post
};

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




日歷

鏈接

個人資料

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

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
自拍偷拍亚洲在线| 日本不卡高字幕在线2019| 亚洲精品三区| 国产精品久久久久久久久搜平片| 超碰caoporn久久| 狠狠色噜噜狠狠狠狠色吗综合| 久久青草免费| 亚洲mv大片欧洲mv大片精品| 国产成人成网站在线播放青青| 欧美亚洲综合久久| 在线日韩日本国产亚洲| 国产精品伦子伦免费视频| 国产欧美一区二区在线播放| 亚洲国产精品久久精品怡红院| 欧美日韩国产经典色站一区二区三区| 国产二区国产一区在线观看| 狠狠色综合网| 国产一区二区三区观看| 国产精品男女猛烈高潮激情| 99国产一区| 在线观看国产原创自拍视频| 日韩中文一区二区| 国产精品美女呻吟| 欧美乱妇40p| 亚洲色图15p| 日本午夜精品久久久久| 国产成人精品免费视频| 日本高清免费电影一区| 日韩夫妻性生活xx| 久久久综合精品| 国产成人精品一区二三区在线观看| 日本精品免费观看高清观看| 欧美亚洲国产成人精品| 成人在线观看免费网站| 2019亚洲日韩新视频| 亚洲欧洲国产日韩精品| 日韩欧美亚洲区| 国产区二精品视| 欧美三日本三级三级在线播放| 日韩一级裸体免费视频| 99这里只有久久精品视频| 欧美第一区第二区| 国产精一品亚洲二区在线视频| 亚洲成人你懂的| 亚洲天堂av图片| 91免费视频网址| 99re视频在线观看| 日韩精品福利网| 欧美高清电影在线看| 国产精品视频一区二区三区不卡| 欧美特黄aaaaaaaa大片| 久久免费国产精品1| 亚洲精品国产首次亮相| 99视频在线精品| 欧美一区二区黄| 一本久久a久久免费精品不卡| 色男人天堂综合再现| 波多野结衣在线一区二区| 99r精品视频| 亚洲国产精品悠悠久久琪琪| 亚洲日产av中文字幕| 日本99精品| 久久爱www久久做| 国产精品欧美在线| 男女视频在线| 3p视频在线观看| 欧美电影在线免费观看| 欧美熟乱15p| 亚洲精品视频一区二区三区| 中文字幕日韩视频| 国产在线一区二区三区四区| 欧美日韩国产欧美日美国产精品| 狠狠色丁香婷婷综合久久片| 国产精品电影网站| 亚洲天堂资源| 日韩欧美精品在线观看| 国产精品午夜一区二区欲梦| 欧美精品在线一区二区三区| 日本精品视频在线播放| 大黄网站在线观看| 97久久精品一区二区三区的观看方式| 日韩亚洲精品在线| 亚洲不卡一区二区三区| 欧美亚洲综合一区| 欧美亚洲激情在线| 亚洲妇熟xxxx妇色黄| 狠狠做深爱婷婷综合一区| 国产人成亚洲第一网站在线播放| 老司机精品在线| 国产aⅴ精品一区二区三区久久| 一区二区三区成人在线视频| 午夜日韩视频| 91国内揄拍国内精品对白| 在线观看免费视频综合| 欧美午夜一区二区| 国产在线视频2019最新视频| 欧美成人a交片免费看| 大黄网站在线观看| 成人影音在线| 麻豆理论在线观看| 国产日韩欧美日韩大片| 欧美日韩三级在线| 国产成人亚洲精品青草天美| 久久久精品国产一区二区| 欧美精品一二区| aa国产精品| 欧美性生交xxxxx久久久| 4438全国亚洲精品在线观看视频| 国产亚洲精品久久久久婷婷瑜伽| 欧美顶级少妇做爰| 久久众筹精品私拍模特| 久久久久一区二区三区四区| 久久久久久九九九九| 中文字幕视频一区二区三区久| 一区二区欧美精品| 五月综合激情婷婷六月色窝| 欧美日韩国产v| 成人动漫av在线| 国产欧美一区二区精品仙草咪| 国产成+人+综合+亚洲欧美丁香花| 久久久久久国产精品| 欧美日韩一级黄| 亚洲精品亚洲人成在线| 金瓶狂野欧美性猛交xxxx| 国产电影一区二区| 亚洲欧美日韩区| 午夜视频久久久| 欧美猛交ⅹxxx乱大交视频| 国产99久久精品一区二区 夜夜躁日日躁| 91精品啪aⅴ在线观看国产| 91亚洲国产成人精品一区二区三| 外国成人免费视频| 四虎影视4hu4虎成人| 99久久精品国产一区| 欧美在线一级va免费观看| 国产原创一区二区三区| 国模私拍一区二区国模曼安| 尤物yw午夜国产精品视频| a天堂中文在线官网在线| 亚洲美女色禁图| 99在线热播精品免费| 亚洲福利国产| 丁香五月网久久综合| 国产午夜精品福利| 亚洲国产成人av网| 国产成人av在线影院| 色妞在线综合亚洲欧美| 性直播体位视频在线观看| 一本一道久久a久久精品综合蜜臀| 欧美一区二区三区视频| 视频一区视频二区视频三区视频四区国产| 成人午夜av影视| 欧美日韩亚洲一区二区三区在线| 免费欧美网站| 国产三级精品在线| 欧美momandson| 亚洲韩国欧洲国产日产av| 日韩欧美少妇| 精品国产午夜肉伦伦影院| av美女在线观看| 国产不卡免费视频| 欧美裸体在线版观看完整版| 国自产精品手机在线观看视频| 你懂的一区二区三区|