JS案例-JS特效第三天

从今天起开始笔记以天来计算,今天是学习JS特效第三天,以天来记录也比较整齐。

这几个案例都是环环相扣,前面的不会,后面的就不用说啦。前面一通,后面你懂得。

第一个案例:淘宝楼层跳跃

楼层跳跃京东和淘宝都是有的。后来京东首页取消啦。

效果展示:


Gif_20181207_233243.gif

重点是要理解为什么要这样做。
源代码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        body,html {
            height: 100%;
        }
        ul {
            list-style: none;
            height: 100%;
        }
        ul li {
            height: 100%;
        }
        ol {
            list-style: none;
            position: fixed;
            top: 80px;
            left: 50px;
        }
        ol li {
            width: 50px;
            height: 50px;
            border: 1px solid #000;
            text-align: center;
            line-height: 50px;
            margin-top: -1px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <ul>
        <li>鞋子区域</li>
        <li>袜子区域</li>
        <li>裤子区域</li>
        <li>裙子区域</li>
        <li>帽子区域</li>
    </ul>
    <ol>
        <li>鞋子</li>
        <li>袜子</li>
        <li>裤子</li>
        <li>裙子</li>
        <li>帽子</li>
    </ol>

    <script>
        //需求:点击ol中的li,屏幕滑动到对应的ul中的li的范围。
        //思路:还是利用window.scrollTo();利用缓动动画原理实现屏幕滑动。
        //步骤:
        //0.获取元素
        //1.指定ul和ol中的li的背景色,对应的li背景色相同
        //2.老三步。(获取元素并绑定事件)
        //3.利用缓动动画原理实现屏幕滑动
        //4.用scroll事件模拟盒子距离最顶端的距离。

        //0.获取元素
        var ul = document.getElementsByTagName("ul")[0];
        var ol = document.getElementsByTagName("ol")[0];
        var ulLiArr = ul.children;
        var olLiArr = ol.children;
        var target = 0;var leader = 0;var timer = null;
        //1.指定ul和ol中的li的背景色,对应的li背景色相同
        //设置一个数组,里面装颜色,然指定的颜色给数组中的指定元素
        var arrColor = ["pink","blue","yellow","orange","green"];
        //利用for循环给两个数组的元素上色
        for(var i=0;i<arrColor.length;i++){
            //上色
            ulLiArr[i].style.backgroundColor = arrColor[i];
            olLiArr[i].style.backgroundColor = arrColor[i];


            //属性绑定索引值
            olLiArr[i].index = i;
            //2.老三步。(并绑定事件)循环绑定,为每一个li绑定点击事件
            olLiArr[i].onclick = function () {
                //***获取目标位置
                    //获取索引值。
                target = ulLiArr[this.index].offsetTop;
                console.log(target);

                //要用定时器,先清除定时器
                clearInterval(timer);
                //3.利用缓动动画原理实现屏幕滑动
                timer = setInterval(function () {
                    //(1).获取步长
                    var step = (target-leader)/10;
                    //(2).二次处理步长
                    step = step>0?Math.ceil(step):Math.floor(step);
                    //(3).屏幕滑动
                    leader = leader + step;
                    window.scrollTo(0,leader);
                    //(4).清除定时器
                    if(Math.abs(target-leader)<=Math.abs(step)){
                        window.scrollTo(0,target);
                        clearInterval(timer);
                    }
                },25);
            }
        }

        //4.用scroll事件模拟盒子距离最顶端的距离。
        window.onscroll = function () {
            //每次屏幕滑动,把屏幕卷去的头部赋值给leader,模拟获取显示区域距离顶部的距离
            leader = scroll().top;
        }

function scroll() {  // 开始封装自己的scrollTop
    if(window.pageYOffset != null) {  // ie9+ 高版本浏览器
        // 因为 window.pageYOffset 默认的是  0  所以这里需要判断
        return {
            left: window.pageXOffset,
            top: window.pageYOffset
        }
    }
    else if(document.compatMode === "CSS1Compat") {    // 标准浏览器   来判断有没有声明DTD
        return {
            left: document.documentElement.scrollLeft,
            top: document.documentElement.scrollTop
        }
    }
    return {   // 未声明 DTD
        left: document.body.scrollLeft,
        top: document.body.scrollTop
    }
}
    </script>
</body>
</html>

第二个案例:元素跟随鼠标

效果秀


鼠标跟随
  • 知识点:
    DOM上的某个事件触发时,JS机制会产生一个事件对象event。
    这个对象中包含着所有与事件有关的信息。
    所有浏览器都支持event对象,但支持的方式不同。

ie 678 支持 window.event 但不支持形参。
其它浏览器window.event和形参都支持,看下面代码:

<script>
        var bodyC=document.body;
            bodyC.style.cssText="width:3000px;height:3000px"//必须要让BODY有内容,否则就是一个点。鬼才能点到。
       bodyC.onclick=function(event){
        //console.log(window.event)ie 678 支持这个
        //console.log(event)其它浏览器支持这个

        // 兼容写法
        event=event||window.event;
        console.log(event);
      }
    </script>
生成的mouseEvent,本身也是个对象,可以调用上面的属性

先把这三个属性搞清楚
event.pageY 鼠标到这个网页最顶部的距离
event.scrollY 鼠标到这个屏幕最顶部的距离
event.clientY 鼠标到这个浏览器可视区域最顶部的距离(一般就是书签栏下面)

不知道你们能不能看懂

源代码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        body {
            height: 5000px;
        }
        img {
            position: absolute;
            padding: 10px 0;
            border: 1px solid #ccc;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <img src="images/img.jpg" width="100"/>

    <script>
        //需求:点击页面的任何地方,图片跟随鼠标移动到点击位置。
        //思路:获取鼠标在页面中的位置,然图片缓慢运动到鼠标点击的位置。
        //  兼容ie67做pageY和pageX;
        //  原理:     鼠标在页面的位置 = 被卷去的部分+可视区域部分。
        //步骤:
        //1.老三步。
        //2.获取鼠标在页面中的位置。
        //3.利用缓动原理,慢慢的运动到指定位置。(包括左右和上下)

        //1.老三步。
        var img = document.getElementsByTagName("img")[0];
        var timer = null;
        var targetx = 0;var targety = 0;
        var leaderx = 0;var leadery = 0;
        //给整个文档绑定点击事件获取鼠标的位置。
        document.onclick = function (event) {
            //新五步
            //兼容获取事件对象
            event = event || window.event;
            //鼠标在页面的位置 = 被卷去的部分+可视区域部分。
            var pagey = event.pageY || scroll().top + event.clientY;
            var pagex = event.pageX || scroll().left + event.clientX;

            //要用定时器,先清定时器
//            targety = pagey-img.offsetHeight/2;
//            targetx = pagex-img.offsetWidth/2;
            targety = pagey-30;
            targetx = pagex-50;
            clearInterval(timer);
            timer = setInterval(function () {
                //为盒子的位置获取值
                leaderx = img.offsetLeft;
                leadery = img.offsetTop;
                //获取步长
                var stepx = (targetx-leaderx)/10;
                 var stepy = (targety-leadery)/10;
                //二次处理步长
                stepx = stepx>0?Math.ceil(stepx):Math.floor(stepx);
                leaderx = leaderx + stepx;

                stepy = stepy>0?Math.ceil(stepy):Math.floor(stepy);
                leadery = leadery + stepy;
                //赋值
                img.style.left = leaderx + "px";
                img.style.top = leadery + "px";
                
                //清定时器

               if(Math.abs(targety-img.offsetTop)<=Math.abs(stepy) && Math.abs(targetx-img.offsetLeft)<=Math.abs(stepx)){
                   img.style.top = targety + "px";
                   img.style.left = targetx + "px";
                   clearInterval(timer);
               }
            },30);
        }
      

    </script>



</body>
</html>

第三个案例

效果秀


获取鼠标在盒子里的位置

获取方法就是鼠标到页面的距离-这个div到页面的距离。

源代码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .box  {
            width: 300px;
            height: 200px;
            padding-top: 100px;
            background-color: pink;
            margin: 100px;
            text-align: center;
            font: 18px/30px "simsun";
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="box">

    </div>

    <script src="animate.js"></script>
    <script>
        var div = document.getElementsByTagName("div")[0];

        div.onmousemove = function (event) {
            event = event || window.event;
            //2.获取鼠标在整个页面的位置
            var pagex = event.pageX || scroll().left + event.clientX;
            var pagey = event.pageY || scroll().top + event.clientY;
            //4.用鼠标的位置减去盒子的位置赋值给盒子的内容。
            var targetx = pagex - div.offsetLeft;
            var targety = pagey - div.offsetTop;
            this.innerHTML = "X坐标为:"+targetx+"px;<br>Y坐标为:"+targety+"px;"
        }

    </script>

</body>
</html>

第四个案例 产品放大镜

难点 比例问题

需要知道以下技术点:

onmousedown 鼠标按下
onmouseup 鼠标弹起

效果秀:


是不是很熟悉

源码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .box {
            width: 350px;
            height: 350px;
            margin:100px;
            border: 1px solid #ccc;
            position: relative;
        }
        .big {
            width: 400px;
            height: 400px;
            position: absolute;
            top: 0;
            left: 360px;
            border: 1px solid #ccc;
            overflow: hidden;
            display: none;
        }
        .mask {
            width: 175px;
            height: 175px;
            background: rgba(255, 255, 0, 0.4);
            position: absolute;
            top: 0;
            left: 0;
            cursor: move;
            display: none;
        }
        .small {
            position: relative;
        }
        img {
            vertical-align: top;
        }
    </style>

    <script src="animate.js"></script>
    <script>
        window.onload = function () {
            //需求:鼠标放到小盒子上,让大盒子里面的图片和我们同步等比例移动。
            //技术点:onmouseenter==onmouseover 第一个不冒泡
            //技术点:onmouseleave==onmouseout  第一个不冒泡
            //步骤:
            //1.鼠标放上去显示盒子,移开隐藏盒子。
            //2.老三步和新五步(黄盒子跟随移动)
            //3.右侧的大图片,等比例移动。

            //0.获取相关元素
            var box = document.getElementsByClassName("box")[0];
            var small = box.firstElementChild || box.firstChild;
            var big = box.children[1];
            var mask = small.children[1];
            var bigImg = big.children[0];

            //1.鼠标放上去显示盒子,移开隐藏盒子。(为小盒子绑定事件)
            small.onmouseenter = function () {
                //封装好方法调用:显示元素
                show(mask);
                show(big);
            }
            small.onmouseleave = function () {
                //封装好方法调用:隐藏元素
                hide(mask);
                hide(big);
            }

            //2.老三步和新五步(黄盒子跟随移动)
            //绑定的事件是onmousemove,而事件源是small(只要在小盒子上移动1像素,黄盒子也要跟随)
            small.onmousemove = function (event) {
                //想移动黄盒子,必须知道鼠标在small中的位置。x作为mask的left值,y作mask的top值。
                //新五步
                event = event || window.event;
                var pagex = event.pageX || scroll().left + event.clientX;
                var pagey = event.pageY || scroll().top + event.clientY;
                //让鼠标在黄盒子最中间,减去黄盒子宽高的一半
                var x = pagex - box.offsetLeft - mask.offsetWidth/2;
                var y = pagey - box.offsetTop - mask.offsetHeight/2;
                //限制换盒子的范围
                //left取值为大于0,小盒子的宽-mask的宽。
                if(x<0){
                    x = 0;
                }
                if(x>small.offsetWidth-mask.offsetWidth){
                    x = small.offsetWidth-mask.offsetWidth;
                }
                //top同理。
                if(y<0){
                    y = 0;
                }
                if(y>small.offsetHeight-mask.offsetHeight){
                    y = small.offsetHeight-mask.offsetHeight;
                }
                //移动黄盒子
                console.log(small.offsetHeight);
                mask.style.left = x + "px";
                mask.style.top = y + "px";

                //3.右侧的大图片,等比例移动。
                //如何移动大图片?等比例移动。
                //    大图片/大盒子 = 小图片/mask盒子
                //    大图片走的距离/mask走的距离 = (大图片-大盒子)/(小图片-黄盒子)
//                var bili = (bigImg.offsetWidth-big.offsetWidth)/(small.offsetWidth-mask.offsetWidth);

                //大图片走的距离/mask盒子都的距离 = 大图片/小图片
                var bili = bigImg.offsetWidth/small.offsetWidth;

                var xx = bili*x;
                var yy = bili*y;


                bigImg.style.marginTop = -yy+"px";
                bigImg.style.marginLeft = -xx+"px";
            }

        }
    </script>
</head>
<body>
    <div class="box">
        <div class="small">
            <img src="images/001.jpg" alt=""/>
            <div class="mask"></div>
        </div>
        <div class="big">
            <img src="images/0001.jpg" alt=""/>
        </div>
    </div>
</body>
</html>

第五个案例 可以拖拽的盒子

效果图:

Gif_20181207_233157.gif

知识点:

//禁止文本选中(选中后取消)
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
还有两个新事件:
onmousedown 鼠标按下
onmouseup 鼠标松开
源码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .nav {
            height: 30px;
            background: #036663;
            border-bottom: 1px solid #369;
            line-height: 30px;
            padding-left: 30px;
        }

        .nav a {
            color: #fff;
            text-align: center;
            font-size: 14px;
            text-decoration: none;

        }

        .d-box {
            width: 400px;
            height: 300px;
            border: 5px solid #eee;
            box-shadow: 2px 2px 2px 2px #666;
            position: absolute;
            top: 40%;
            left: 40%;
        }

        .hd {
            width: 100%;
            height: 25px;
            background-color: #7c9299;
            border-bottom: 1px solid #369;
            line-height: 25px;
            color: white;
            cursor: move;
        }

        #box_close {
            float: right;
            cursor: pointer;
        }
    </style>

    <script src="animate.js"></script>
    <script>
        window.onload = function () {
            //需求:在指定位置按住鼠标左键移动对话框。
            //分析:鼠标按下,触动事件,移动在更换对话框的位置。
            //鼠标按下onmousedown   鼠标弹起:onmouseup   鼠标移动onmousemove
            //步骤:
            //1.老三步和新五步
            //2.把鼠标的坐标赋值给对话框。

            var box = document.getElementById("d_box");
            var drop = document.getElementById("drop");
            //1.老三步和新五步
            //先按下,在移动触动此事件
            drop.onmousedown = function (event) {
                //获取鼠标在盒子中的坐标,将来移动的时候减去保证鼠标在盒子的指定位置
                event = event || window.event;
                var pagex = event.pageX || scroll().left + event.clientX;
                var pagey = event.pageY || scroll().top + event.clientY;

                // 先获取鼠标在盒子中的坐标,后面再减去
                var x = pagex - box.offsetLeft;
                var y = pagey - box.offsetTop;


                document.onmousemove = function (event) {
                    //2.把鼠标的坐标赋值给对话框。
                    event = event || window.event;
                    var xx = event.pageX || scroll().left + event.clientX;
                    var yy = event.pageY || scroll().top + event.clientY;
                    //二次操作鼠标位置  减去鼠标在盒子中的坐标;
                    // 为什么要减去呢,因为box.style.left 是以最左边的值为准,top也是
                    xx = xx - x;
                    yy = yy - y;

                    //给box赋值
                    box.style.left = xx+"px";
                    box.style.top = yy+"px";
                    //禁止文本选中(选中后取消)
                    window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
                }
            }

            //事件解绑
            drop.onmouseup = function () {
                //解绑
                document.onmousemove = null;
            }


        }
    </script>

</head>
<body>
<!--顶部注册部分,无用-->
    <div class="nav">
        <a href="javascript:;" id="register">注册信息</a>
    </div>
<!--我们移动的对话框-->
    <div class="d-box" id="d_box">
        <div class="hd" id="drop">
            <i>注册信息 (可以拖拽)</i>
            <span id="box_close">【关闭】</span>
        </div>
        <div class="bd"></div>
    </div>
</body>
</html>

第六个案例 自己制作滚动条

我做的很丑,你可以搞得漂亮一点。
效果图:

Gif_20181207_233125.gif

源码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .box {
            width: 300px;
            height: 500px;
            border: 1px solid red;
            box-sizing: border-box;
            margin: 50px auto;
            overflow: hidden;
            position: relative;
        }
        .scroll {
            width: 20px;
            height: 500px;
            background-color: #ccc;
            position: absolute;
            top: 0;
            right: 0;
        }
        .bar {
            width: 20px;
            background-color: red;
            border-radius: 10px;
            cursor: pointer;
            position: absolute;
            top: 0;
        }
        .content {
            padding: 15px;
        }
    </style>

    <script src="animate.js"></script>
    <script>
        window.onload = function () {
            //需求:模拟滚动条,鼠标拖动滚动条,滚动条动,而且内容等比例联动。
            //步骤:
            //1.根据内容和盒子的比例确定bar的高。
            //2.绑定事件(鼠标按下,然后移动)
            //3.鼠标移动,bar联动
            //4.内容等比例联动


            //0.获取相关元素
            var box = document.getElementById("box");
            var content = box.children[0];
            var scroll = box.children[1];
            var bar = scroll.children[0];

            //1.根据内容和盒子的比例确定bar的高。
            //内容的高/盒子的高 = scroll的高/bar的高
            //bar的高 = 盒子的高*scroll的高/内容的高
            var barHeight = box.offsetHeight*scroll.offsetHeight/content.offsetHeight;
            bar.style.height = barHeight + "px";
            //2.绑定事件(鼠标按下,然后移动)
            bar.onmousedown = function (event) {
                event = event || window.event;
                var pageyy = event.pageY || scroll().top + event.clientY;
                var y = pageyy - bar.offsetTop;
                //模拟拖拽案例
                document.onmousemove = function (event) {
                    //新五步获取鼠标在页面的位置。
                    event = event || window.event;
                    var pagey = event.pageY || scroll().top + event.clientY;
                    //鼠标的位置-鼠标在盒子中的位置。
                    pagey = pagey - y;
                    //限制y的取值。大于0,小于scroll的高度-bar的高度
                    if(pagey<0){
                        pagey = 0;
                    }
                    if(pagey>scroll.offsetHeight-bar.offsetHeight){
                        pagey = scroll.offsetHeight-bar.offsetHeight;
                    }

                    //3.鼠标移动,bar联动
                    bar.style.top = pagey + "px";

                    //4.内容等比例联动
                    //高级比例:  内容走的距离/bar走的距离 = (内容的高-大盒子的高)/(scroll的高-bar的高)
                    var s = pagey *(content.offsetHeight-box.offsetHeight)/(scroll.offsetHeight-bar.offsetHeight);
                    //s赋值给content。通过marginTop负值移动content
                    content.style.marginTop = -s+"px";

                    //让被选文字清除。
                    window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
                }
            }

            //事件解绑
            document.onmouseup = function () {
                document.onmousemove = null;
            }

        }
    </script>

</head>
<body>
    <div class="box" id="box">
        <div class="content">
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            孩儿励志出湘关,学不成名终不还。<br>
            埋骨何须桑梓地,人生无处不青山。<br>
            -------------结束------------<br>
        </div>
        <div class="scroll">
            <div class="bar"></div>
        </div>
    </div>



</body>
</html>
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,498评论 1 11
  • offset家族三大家族和一个事件对象三大家族(offset/scroll/client)事件对象/event ...
    Yuann阅读 963评论 0 5
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,739评论 2 59
  • 安安七个半月了,可以吃鸡肉了,到舅婆家给你拿了鸡肉,做好,你大口大口吃完,希望你以后很会吃,健康成长。 下午带你到...
    安宝日志阅读 184评论 0 0
  • 处处留心皆风景 自从开始写文章,自己更加留意自己的念头和心情。有时候,抓住一个好心情,去回想,去记录。就看到内心特...
    娟记阅读 307评论 2 3