奥罗塞,撒丁岛,意大利 (© EyeEm Mobile GmbH/Getty Images)

Welcom to 评论 - lizhenqiu blog!

    #1312

    作者:广西南宁市
    文章:奇妙的 CSS shapes(CSS图形)  发表时间:2017-06-13, 09:24:14  
    展开↯

    #1313

    作者:广西南宁市
    文章:奇妙的 CSS shapes(CSS图形)  发表时间:2017-06-12, 17:50:38  
    展开↯

    #1314

    作者:广西南宁市
    深入解析JavaScript中函数的Currying柯里化
    JS中的柯里化(currying)
    问道js题目 编写add函数 然后 add(1)(2)(3)(4) 输出10 再考虑拓展性
    一道面试题引发的对javascript类型转换的思考
    <script>function curry(fn) { var slice = [].slice; var len = fn.length; return function curried() { var args = slice.call(arguments); if (args.length >= len) { return fn.apply(null, args); } return function () { return curried.apply(null, args.concat(slice.call(arguments))); }; }; } var add = curry(function (a, b, c, d) { return a + b + c + d; }); console.log(add(1)(2)(3)(4)); // 10 console.log(add(1, 2, 3)(4)); // 10 console.log(add(1)(2, 3)(4)); // 10</script>
    Run code
    Cut to clipboard
      文章:奇妙的 CSS shapes(CSS图形)  发表时间:2017-06-12, 17:48:18  
      展开↯

      #1315

      作者:广西南宁市
      粘贴代码。里面包含图片自动上传bug
      #,广西南宁市,2017-06-08,20:03:48, 通过粘贴纯文本?
      #,中国,2017-06-08,20:08:18, 手机粘贴图片?
      #,中国,2017-06-08,20:09:10, 手机发布按钮文字颜色
      #,广西南宁市,2017-06-12,09:05:25, 楼中楼回复的时候,回复文本框重新的不能粘贴图片等事件
      #,广西南宁市,2017-06-12,14:52:10, 搜索点击文章后关键词没有
      #,广西南宁市,2017-06-12,17:33:45, 怀疑者还在期盼时机,而乐观者已经折腾上路。
      文章:@意见反馈/技术支持/伊网/安企网  发表时间:2017-06-08, 19:50:55  
      展开↯

      #1316

      作者:广西南宁市
      使用 position:sticky 实现粘性布局
      <div class="container"> <div class="sticky-box">内容1</div> <div class="sticky-box">内容2</div> <div class="sticky-box">内容3</div> <div class="sticky-box">内容4</div> </div> <style>.container { background: #eee; width: 600px; height: 3000px; margin: 0 auto; } .sticky-box { position: -webkit-sticky; position: sticky; height: 60px; margin-bottom: 30px; background: #ff7300; top: 0px; } div { font-size: 30px; text-align: center; color: #fff; line-height: 60px; }</style>
      Run code
      Cut to clipboard
        生效规则
        position:sticky 的生效是有一定的限制的,总结如下:

        须指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

        并且 top 和 bottom 同时设置时,top 生效的优先级高,left 和 right 同时设置时,left 的优先级高。
        设定为 position:sticky 元素的任意父节点的 overflow 属性必须是 visible,否则 position:sticky 不会生效。这里需要解释一下:

        如果 position:sticky 元素的任意父节点定位设置为 overflow:hidden,则父容器无法进行滚动,所以 position:sticky 元素也不会有滚动然后固定的情况。
        如果 position:sticky 元素的任意父节点定位设置为 position:relative | absolute | fixed,则元素相对父元素进行定位,而不会相对 viewprot 定位。
        达到设定的阀值。这个还算好理解,也就是设定了 position:sticky 的元素表现为 relative 还是 fixed 是根据元素是否达到设定了的阈值决定的。
        文章:奇妙的 CSS shapes(CSS图形)  发表时间:2017-06-12, 17:07:33  
        展开↯

        #1317

        作者:广西南宁市
        clip-path 与 shape-outside 的兼容性
        额,比较遗憾,这两个属性的兼容性目前仍处于比较尴尬的境地。感兴趣的可以看看 CANIUSE 。全面兼容使用仍需努力。

        所以本文所展示的 Demo 都是在 -webkit- 内核浏览器下完成的。



        最后
        系列 CSS 文章汇总在我的 Github

        到此本文结束,如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
        文章:奇妙的 CSS shapes(CSS图形)  发表时间:2017-06-12, 16:52:13  
        展开↯

        #1318

        作者:广西南宁市
        CodePen Demo -- 图文混排 shape-outside
        嗯?好像没什么了不起啊?这不就是 float 的效果吗?

        不,不是的,看看 float 和 加上shape-outside 后的对比:

        看出区别了吗?使用了 shape-outside ,真正的实现了文字根据图形的轮廓,在其周围排列。

        上图是使用开发者工具选取了作用了 shape-outside 的元素,可以看到,使用了特殊的蓝色去标记几何图形的轮廓。在这个蓝色区域之外,文字都将可以进行排列。



        shape-outside 的本质

        划重点,划重点,划重点。

        所以,shape-outside 的本质其实是生成几何图形,并且裁剪掉其几何图形之外周围的区域,让文字能排列在这些被裁剪区域之内。

        所以,了解了这个本质之后,我们再看看一些更复杂的图文混排。

        平行四边形

        CodePen Demo -- 图文混排 shape-outside
        心形、菱形

        CodePen Demo -- 图文混排 shape-outside
        文章:奇妙的 CSS shapes(CSS图形)  发表时间:2017-06-12, 16:51:00  
        展开↯

        #1319

        作者:广西南宁市
        clip-path 动画

        clip-path 另外一个强大之处在于可以进行 CSS transtion 与 CSS animation,也就是过渡和动画。
        CodePen Demo -- Clip-path 多边形过渡动画

        图形变换动画

        除此之外,我们还可以尝试,将一个完整的图形,分割成多个小图形,这也是 clip-path 的魅力所在,纯 CSS 的图形变换:
        CodePen Demo -- Clip-path triangle2rect

        clip-path 动画的局限

        clip-path 动画虽然美好,但是存在一定的局限性,那就是进行过渡的两个状态,坐标顶点的数量必须一致。

        也就是如果我希望从三角形过渡到矩形。假设三角形和矩形的 clip-path 分别为:

        三角形:clip-path: polygon(50% 0, 0 100%, 100% 0)
        矩形: clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%)
        进行过渡动画时候,直接从 polygon(50% 0, 0 100%, 100% 0) --> polygon(0 0, 100% 0, 100% 100%, 0 100%) 是不行的,因为是从 3 个坐标点变换到 4 个坐标点。

        因此这里需要这用一个讨巧的办法,在三角形的表示方法中,使用四个坐标点表示,其中两个坐标点进行重合即可。也就是:

        三角形:clip-path: polygon(50% 0, 0 100%, 100% 0) -> clip-path: polygon(50% 0, 50% 0, 0 100%, 100% 0)


        N边形过渡动画

        如果脑洞够大,随机生成 N(N>=1000)边形,进行变换,会是什么效果呢?
        CodePen Demo -- 2000边形过渡动画

        变换的瞬间很有爆炸的感觉。不过这里有个很大的问题,只是随机生成了 2000 个坐标点,然后使用 clip-path 将这些坐标点连接起来,并不是符合要求的多边形。

        VUE官网,有下面这样一个例子,一个规则的多边形进行不断的过渡动画,非常酷炫:

        VUE官网使用的是 SVG 实现的,这里我稍微改变了下,使用 CSS clip-path 实现:

        CodePen Demo -- clip-path N polygon ,感兴趣可以看看。

        shape-outside
        最后再来看看 shape-outside,另外一个有趣的有能力生成几何图形的属性。

        shape-outside 是啥?它也有制造各种几何图形的能力,但是它只能和浮动 float 一起使用。

        虽然使用上有所限制,但是它赋予了我们一种更为自由的图文混排的能力。

        先看看它的 API,看上去貌似很复杂:
        { /* Keyword values */ shape-outside: none; shape-outside: margin-box; shape-outside: content-box; shape-outside: border-box; shape-outside: padding-box; /* Function values */ shape-outside: circle(); shape-outside: ellipse(); shape-outside: inset(10px 10px 10px 10px); shape-outside: polygon(10px 10px, 20px 20px, 30px 30px); /* <url> value */ shape-outside: url(image.png); /* Gradient value */ shape-outside: linear-gradient(45deg, rgba(255, 255, 255, 0) 150px, red 150px); /* Global values */ shape-outside: initial; shape-outside: inherit; shape-outside: unset; }
        Run code
        Cut to clipboard

          但是,其实它和 clip-path 的语法非常类似,很容易触类旁通。看看实例,更易理解:

          大家自行去熟悉下 API,接着假设我们有下面这样的结构存在:
          <div class="container"> <div class="shape-outside"> <img src="image.png"> </div> xxxxxxxxxxx,文字描述,xxxxxxxxx </div> <style> .shape-outside { width: 160px; height: 160px; shape-outside: circle(80px at 80px 80px); float: left; }</style>
          Run code
          Cut to clipboard
            注意,上面 .shape-outside 使用了浮动,并且定义了 shape-outside: circle(80px at 80px 80px) ,表示在元素的 (80px, 80px) 坐标处,生成一个 80px 半径的圆。

            如此,将会产生一种图文混排的效果:
            文章:奇妙的 CSS shapes(CSS图形)  发表时间:2017-06-12, 16:48:36  
            展开↯

            #1320

            作者:广西南宁市
            clip-path
            CSS 新属性 clip-path,意味裁剪路径的意思,让我们可以很便捷的生成各种几何图形。

            clip-path 通过定义特殊的路径,实现我们想要的图形。而这个路径,正是 SVG 中的 path 。

            看看它的 API:
            { /* Keyword values */ clip-path: none; /* Image values */ clip-path: url(resources.svg#c1); /* Box values clip-path: fill-box; clip-path: stroke-box; clip-path: view-box; clip-path: margin-box clip-path: border-box clip-path: padding-box clip-path: content-box /* Geometry values */ clip-path: inset(100px 50px); clip-path: circle(50px at 0 100px); clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); /* Box and geometry values combined */ clip-path: padding-box circle(50px at 0 100px); /* Global values */ clip-path: inherit; clip-path: initial; clip-path: unset; }
            Run code
            Cut to clipboard

              看上去很多,其实很好理解,如果接触过 SVG 的 path,其实就是照搬 SVG 的 path 的一些定义。换言之,如果没有接触过 SVG,看完本文后再去学习 SVG 路径 ,也会十分容易上手。

              根据不同的语法,我们可以生成不同的图形。

              例如 clip-path: circle(50px at 50px 50px) 表示在元素的 (50px, 50px)处,裁剪生成一个半径为 50px 的圆。

              以元素的左上角为坐标起点

              而整个 clip-path 属性,最为重要的当属 polygon,可以利用 polygon 生成任意多边形。



              clip-path 示例

              下面分别列举使用 clip-path 生成一个圆形和一个十边形。
              <style>/* 圆形 */ .circle { width: 100px; height: 100px; background-color: yellowgreen; clip-path: circle(50px at 50px 50px); } /* 十边形 */ .polygon { width: 100px; height: 100px; background-color: yellowgreen; clip-path: polygon(50% 0%, 80% 10%, 100% 35%, 100% 70%, 80% 90%, 50% 100%, 20% 90%, 0% 70%, 0% 35%, 20% 10%); }</style><div class="circle"></div><div class="polygon"></div>
              Run code
              Cut to clipboard

                clip-path: circle(50px at 50px 50px) 上文也讲了,表示在元素的 (50px, 50px)处,裁剪生成一个半径为 50px 的圆。

                而在 clip-path: polygon(50% 0%, 80% 10%, 100% 35%, 100% 70%, 80% 90%, 50% 100%, 20% 90%, 0% 70%, 0% 35%, 20% 10%) 中,依次列出了 10 个坐标点。我们的图形就是依次连接这 10 个坐标点形成一个裁切图形。

                当然,这里采用的是百分比,也可以使用具体的数值。
                文章:奇妙的 CSS shapes(CSS图形)  发表时间:2017-06-12, 16:43:15  
                展开↯

                #1321

                作者:广西南宁市
                #,广西南宁市,2017-06-12,16:29:52, 经不住流年似水, 逃不过此间少年
                文章:@意见反馈/技术支持/伊网/安企网  发表时间:2017-06-12, 16:27:24  
                展开↯

                #1322

                作者:广西南宁市
                #,广西南宁市,2017-06-12,11:09:59,
                #,广西南宁市,2017-06-12,11:10:45,
                #,广西南宁市,2017-06-12,11:11:03, 粘贴gif图片上传的时候bug不动
                #,广西南宁市,2017-06-12,11:31:04,@3, 剪切板不支持GIF的格式 如何将GIF图片复制到剪贴板,能在其它程序的RichEdit中粘贴?
                #,广西南宁市,2017-06-12,15:46:10,@2,
                #,广西南宁市,2017-06-12,15:48:00,@5,
                #,广西南宁市,2017-06-12,15:55:04,
                #,广西南宁市,2017-06-12,15:57:05,
                #,广西南宁市,2017-06-12,15:57:44,@5,
                #,广西南宁市,2017-06-12,15:58:29, 腾讯创业便涨红了脸,额上的青筋条条绽出,争辩道,“抄袭不能算偷……抄袭!……腾讯创业的事,能算偷么?”接连便是难懂的话,什么“君子固穷”,什么“者乎”之类,引得众人都哄笑起来:店内外充满了快活的空气。
                #,广西南宁市,2017-06-12,16:22:52,@8,
                文章:@意见反馈/技术支持/伊网/安企网  发表时间:2017-06-12, 11:09:08  
                展开↯

                #1323

                作者:广西南宁市
                郭靖第一次遇到黄蓉
                骑得什么马? 成吉思汗赐的汗血宝马 = 现在的兰博基尼级别的超跑
                请黄蓉吃的饭? 一十九两七钱四分 = 现在的14357元
                你以为人家玩的是纯情,,其实从一见面 你就输了。。
                #,广西南宁市,2017-06-12,16:18:44, 有背景的孩子他爹他爷总有一代人付出了极大的努力,你现在要做的是走那一代人的路
                #,广西南宁市,2017-06-12,16:20:58, 罗永浩最近不是说了吗:我已经放弃和这个世界掰扯真相了!
                道理很简单:1,我是否幸福取决于别人是否幸福,不患穷而患不均。
                2,出了问题别指责我的问题,这是国家的问题,是政治的问题,必须找到这样的问题,我才会开心!
                当两个或以上得阶级对立起来的时候,弱势阶级就会扛起不平等的大旗。
                文章:@意见反馈/技术支持/伊网/安企网  发表时间:2017-06-12, 16:11:34  
                展开↯

                #1324

                作者:广西南宁市
                文章:@意见反馈/技术支持/伊网/安企网  发表时间:2017-06-12, 16:11:14  
                展开↯

                #1325

                作者:广西南宁市
                #,广西南宁市,2017-06-12,16:03:55,
                #,广西南宁市,2017-06-12,16:04:15,
                #,广西南宁市,2017-06-12,16:04:33,
                #,广西南宁市,2017-06-12,16:05:04,
                文章:@意见反馈/技术支持/伊网/安企网  发表时间:2017-06-12, 16:03:25  
                展开↯

                #1326

                作者:广西南宁市
                文章:Yourphp,thinkphp修改分页代码  发表时间:2017-06-12, 15:35:15  
                展开↯

                #1327

                作者:广西南宁市
                thinkphp引入第三方类
                TP添加第三方sdk,文件放在ThinkPHP/Library/Org文件夹下可独立创建文件夹
                放在lib/ORG下 比如 A.class.php 放在lib/ORG/Util下 那么引用 import('@.ORG.Util.A');
                Run code
                Cut to clipboard
                  文章:Yourphp,thinkphp修改分页代码  发表时间:2017-06-12, 15:34:10  
                  展开↯

                  #1328

                  作者:广西南宁市
                  javascript在网页中实现读取剪贴板粘贴截图功能

                  这篇文章主要介绍了在网页中实现读取剪贴板粘贴截图功能,即可以把剪贴板的截图Ctrl+V粘贴到网页的一个输入框中,例如QQ截图、旺旺截图或者其它截图软件,需要的朋友可以参考下
                  见某网站的输入框支持截屏粘贴的功能,觉得有点意思,于是将代码扒出来分享下。
                  可惜,目前仅有高版本的 Chrome 浏览器支持这样直接粘贴,其他浏览器目前为止还无法粘贴( IE11没测试过 ),当然这种增强型的用户体验功能有总比没有好。
                  输入框的结构代码:
                  <input type="text" id="testInput" />
                  Run code
                  Cut to clipboard

                    为输入框绑定粘贴事件:
                    var input = document.getElementById( 'testInput' ); input.addEventListener( 'paste', function( event ){ // dosomething... });
                    Run code
                    Cut to clipboard

                      粘贴事件的 Event 接口对象提供了一个 clipboardData 接口,该接口就保存了系统剪贴板中的数据,如上面所说,目前只有高版本的 Chrome 浏览器能直接访问系统剪贴板的数据。这就给截屏后保存到剪贴板中的图片于网页直接进行交互提供了一个入口。
                      这里所说的截屏,就是 QQ 提供的截屏或者系统自带的 PrtScn 键的截屏功能,或者其他第三方软件提供的截屏功能。
                      input.addEventListener( 'paste', function( event ){ // 添加到事件对象中的访问系统剪贴板的接口 var clipboardData = event.clipboardData, i = 0, items, item, types; if( clipboardData ){ items = clipboardData.items; if( !items ){ return; } item = items[0]; // 保存在剪贴板中的数据类型 types = clipboardData.types || []; for( ; i < types.length; i++ ){ if( types[i] === 'Files' ){ item = items[i]; break; } } // 判断是否为图片数据 if( item && item.kind === 'file' && item.type.match(/^image\//i) ){ // 读取该图片 imgReader( item ); } } });
                      Run code
                      Cut to clipboard

                        从剪贴板中取到了图片数据,就可以用 FileReader 对其进行读取了。
                        var imgReader = function( item ){ var file = item.getAsFile(), reader = new FileReader(); // 读取文件后将其显示在网页中 reader.onload = function( e ){ var img = new Image(); img.src = e.target.result; document.body.appendChild( img ); }; // 读取文件 reader.readAsDataURL( file ); };
                        Run code
                        Cut to clipboard


                          很短的代码就实现了,可以使用以下源码演示
                          <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>利用 clipboardData 在网页中实现截屏粘贴的功能</title> <style type="text/css"> #box{ width:200px; height:200px; border:1px solid #ddd; } </style> </head> <body> <h1>利用 clipboardData 在网页中实现截屏粘贴的功能</h1> <hr /> <div><input type="text" id="testInput" placeholder="截屏后粘贴到输入框中" size="30" /></div> <script type="text/javascript"> (function(){ var imgReader = function( item ){ var blob = item.getAsFile(), reader = new FileReader(); reader.onload = function( e ){ var img = new Image(); img.src = e.target.result; document.body.appendChild( img ); }; reader.readAsDataURL( blob ); }; document.getElementById( 'testInput' ).addEventListener( 'paste', function( e ){ var clipboardData = e.clipboardData, i = 0, items, item, types; if( clipboardData ){ items = clipboardData.items; if( !items ){ return; } item = items[0]; types = clipboardData.types || []; for( ; i < types.length; i++ ){ if( types[i] === 'Files' ){ item = items[i]; break; } } if( item && item.kind === 'file' && item.type.match(/^image\//i) ){ imgReader( item ); } } }); })(); </script> </body> </html>
                          Run code
                          Cut to clipboard
                            文章:上传base64图片到七牛云存储  发表时间:2017-06-12, 11:33:11  
                            展开↯

                            #1329

                            作者:广西南宁市
                            // box为被拖放的区域 $('body').on('dragover','#contentadddd' , function(event){ var e=event.originalEvent; //box.addEventListener('dragover', function (e) { e.preventDefault(); // 必须阻止默认事件 });//, false
                            Run code
                            Cut to clipboard
                              文章:上传base64图片到七牛云存储  发表时间:2017-06-12, 11:05:06  
                              展开↯

                              #1330

                              作者:广西南宁市
                              文章:@意见反馈/技术支持/伊网/安企网  发表时间:2017-06-12, 09:04:39  
                              展开↯
                              你好,残忍屏蔽广告

                              确定要清除编辑框内容吗?

                              该删除操作将不可恢复。

                              删除 取消

                              激活Windows

                              转到"设置"以激活Windows。