移动端开发

移动端开发

兼容

国内的浏览器大多都是基于Webkit修改过来的内核,兼容移动端主流浏览器,主要处理Webkit内核浏览器即可。

视口

描述:视口(viewport)就是浏览器显示显示网页内容的屏幕区域。视口可以分为布局视口,视觉视口和理想视口。

布局视口

描述:一般移动设备的浏览器都默认设置了一个布局视口,用于解决早期的pc端页面在手机上显示的问题。ios和Android基本都将这个视口分辨率设置为980px,所以PC端的网页大多都能在手机上呈现,只不过看上去元素很小,一般默认可以通过手动缩放网页。

视觉视口

描述:它是用户正在看到的网站的区域,注意是网站的区域。可以通过缩放去操作视觉视口,但不会影响布局视口,布局视口仍保持原来的宽度。

理想视口

描述:为了使网站在移动端有最理想的浏览和阅读宽度而设定。对设备来讲,就是最理想的视口尺寸。
方法:需要手动添加<meta>视口标签通知浏览器操作。<meta>标签的主要目的就是布局视口的宽度应该和理想视口的宽度一致,简单理解就是指设备有多宽,布局视口就有多宽。

meta 视口标签

语法:<meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
注意:在vscode默认骨架中会有这个标签,可以选择添加上其它的属性值。

meta 标签属性说明

属性 说明
width 宽度设置的是视口的宽度,可以设置特殊值 device-width 自适应宽度
user-scalable 用户是否可以缩放,yes 或 no(1 或 0)
initial-scale 初始缩放比,大于 0 的数字
maximum-scale 最大缩放比,大于 0 的数字
minimum-scale 最小缩放比,大于 0 的数字

二倍图

物理像素&物理像素比

物理像素点指的是屏幕显示的最小颗粒,是物理真是存在的。在pc端的页面中,1px等于1个物理像素,但是移动端不尽相同,1px能显示的物理像素点的个数,称作为物理像素比或者屏幕像素比。

多倍图简述

描述:由于在移动端中1px不一定定义1像素,所以可能会导致图片失真,比如一个开发的尺寸是50px*50px,如果选择50px*50px像素的图片,那么在移动端相当于占据了100*100的像素,当图片放大之后,因为高清屏幕的展示,就会出现图片模糊的情况,当遇到这种情况的时候,实际开发尺寸应该与移动端像素尺寸成比例关系。比如iphone6,1px等于2像素,所以此时50*50px的开发尺寸应该选用100*100像素的图片,然后再更改图片的尺寸大小,实现移动端的高清图片。

二倍精灵图做法

1.把精灵图等比例缩放成原来的一半。
2.根据新的大小测量坐标
3.代码中的background-sizing也要写成原来精灵图宽高的一半。

移动端的主流方案

1.单独制作移动端的页面(主流),通常情况下,网址域名前面加m可以打开移动端,通过判断设备,如果是移动端打开,就跳转到移动端。
2.响应式页面兼容移动端,pc端和移动端公用一套网站,只不过在不同的宽度的屏幕下,样式会自动适配。

移动端常见问题及解决方案

1.兼容性问题:移动端浏览器基本上以webkit内核为主,因此就需要考虑webkit的兼容性问题,所以可以使用html5标签和css3样式,浏览器的私有前缀只需要加"-webkit-"即可。
2.css初始化:描述:移动端的初始化推荐使用normalize.css,是一个可以定制的css文件,它让不同的浏览器在渲染网页元素的时候形式更统一,是一种现代的,为html5准备的优质替代方案。
优点:
    1.保护了有价值的默认值,
    2.修复了浏览器的bug,解决了浏览器不一致的默认样式。
    3.Normalize.css是模块化的,提高了易用性。
    4.normalize.css拥有详细的文档。
官网地址:https://necolas.github.io/normalize.css/
3.盒模型 box-sizing:传统的盒模型计算方法盒子的宽度等于盒子内容区域的宽度+边框+内边距。需要自己计算。css3盒模型中,出现了box-sizing,当设置"box-sizing: border-box"的时候,盒模型会自动内减padding和border,不会自动撑大盒子。
4.特殊样式:
    <!-- css3盒模型 -->
    box-sizing: border-box
    -webkit-box-sizing: border-box
    <!-- 清除点击高亮 设置为transparent完成透明 -->
    -webkit-tap-highlight-color: transparent
    <!-- 移动端浏览器默认外观在ios上给按钮和输入框自定义样式 -->
    -webkit-appearance: none;
    <!-- 禁用长安页面时的弹出菜单 -->
    img,a {
        -webkit-touch-callout: none;
    }

css 初始化 normalize.css

描述:移动端的初始化推荐使用normalize.css,是一个可以定制的css文件,它让不同的浏览器在渲染网页元素的时候形式更统一,是一种现代的,为html5准备的优质替代方案。
优点:
    1.保护了有价值的默认值,
    2.修复了浏览器的bug,解决了浏览器不一致的默认样式。
    3.Normalize.css是模块化的,提高了易用性。
    4.normalize.css拥有详细的文档。
官网地址:https://necolas.github.io/normalize.css/

流式布局

描述:流式布局就是百分比布局,也称非固定像素布局。通过将盒子的宽度设置成百分比,从而根据屏幕的宽度进行伸缩,不受固定像素的限制,内容向两侧填充。流式布局方式时web移动端开发使用的比较常见的布局方式。

注意:制作过程中需要定义页面的最大和最小支持的宽度。
max-width:最大宽度(max-height 最大高度)
min-width:最小宽度(min-height 最小高度)

实战笔记

在布局中,如果碰到两侧的元素宽高不随着父元素发生变化,而中间的元素随着父元素的宽度发生变化的时候,可以给两边不发生变化的元素使用绝对定位效果,中间部分不设置宽度,左右两边各设置margin值,通过margin撑开左右两边的距离,内容的宽度随着父盒子宽度的变化而变化。

flex 布局

传统布局与 flex 布局

传统布局:
    1.兼容性好
    2.布局繁琐
    3.局限性,不能在移动端很好的布局
flex布局:
    1.操作方便,布局简单,在移动端广泛应用
    2.pc端浏览器支持较差
    3.IE 11或更低版本,不支持或仅部分支持

flex 布局原理

1.flex布局是flexible Box的缩写,意为弹性布局,用来为盒模型提供最大的灵活性,任何一个容器都可以指定为flex布局。
2.当为父盒子设置flex布局之后,子元素的float,clear和vertical-align属性将失效。
3.伸缩布局=弹性布局=伸缩盒布局=弹性盒布局=flex布局
总结:flex布局就是给父盒子添加flex属性,来控制盒子的位置和排列方式。

flex 布局常用属性

父项常用属性

1.flex-direction:设置主轴的方向
2.justify-content:设置主轴上的子元素排列方式
3.flex-wrap:设置子元素是否换行
4.align-content:设置侧轴上的子元素排列方式(多行)
5.align-items:设置侧轴上的子元素排列方式(单行)
6.flex-flow:复合属性,相当于同时设置了flex-direction和flex-wrap

flex-direction 设置主轴的方向

主轴与侧轴:
    在flex布局中是分为主轴和侧轴两个方向,同样的叫法有行和列,x轴和y轴。默认主轴方向是x轴方向,水平向右,侧轴是y轴方向,垂直向下。
注意:flex的主轴和侧轴是可以通过属性修改的。当主轴修改后,剩下的就是侧轴。
语法:flex-direction: 属性值;

flex-direction 属性值

属性值 说明
row 默认值,从左到右为主轴
row-reverse 设置主轴方向为从右到左
column 设置主轴方向为从上到下
column-reverse 设置主轴方向为从下到上

justify-content 主轴上子元素排列方式

概念:justify-content属性定义了元素在主轴上的排列方式
注意:在使用justify-content属性之前,需要先确定主轴方向。
语法:justify-content: 属性值

justify-content 属性值

属性 属性说明
flex-start 默认值,如果主轴是 x 轴,则从左到右排列
flex-end 从尾部开始排列
center 在主轴居中对齐,如果主轴是 x 轴,则水平居中
space-around 平分剩余空间
space-between 先两边贴平,再平分剩余空间

flex-wrap 设置子项是否换行

描述:默认情况下,子项都排在一条直线上,不换行。
注意:换行后如果不设置padding和margin属性,子项会自动平分父级的空间。如果子项宽度之和超出了父容器的宽度,当设置flex-wrap为不换行之后,子项会自动重新计算宽度,在父容器中能够一行排列展示。
语法:flex-wrap: 属性值;

flex-wrap 属性值

属性 属性说明
nowrap 默认值,不换行
wrap 换行展示

align-items 侧轴上子元素排列方式(单行)

描述:控制子元素在侧轴(默认y轴)上的排列方式,在子项为单行的时候使用。
语法:align-items: 属性值;

align-items 属性值

属性 属性说明
flex-start 默认从上到下
flex-end 从下到上
center 垂直居中
stretch 拉伸,子元素的高度按照父元素的高度加载

align-content 侧轴上子元素排列方式(多行)

描述:设置子元素在侧轴上的排列方式,并且只能用于子项在多行的情况下。在单行下是没有效果的。
语法:align-content: 属性值;

align-content 属性值

属性 属性说明
flex-start 默认在侧轴的头部开始排列
flex-end 在侧轴的尾部开始排列
center 在侧轴的中间开始排列
space-around 子项在侧轴平分剩余空间
space-between 子项在侧轴先分布在两头,再平分剩余空间
stretch 设置子项元素高度平分父元素高度

align-items 和 align-content 的区别

1.align-items适用于单行情况下,只有上对齐,下对齐,居中和拉伸。
2.align-content适用于换行(多行)情况下,单行情况下没有效果。可以设置上对齐,下对齐,居中,拉伸和平均分配父元素空间等。
3.当行的情况下设置侧轴上的子元素排列方式用align-items,多行情况下设置侧轴上的子元素排列方式用align-content。

flex-flow 复合属性

描述:flex-flow属性是flex-direction和flex-wrap的复合写法。
语法:flex-flow: row nowrap; 表示设置主轴为x轴,不换行。属性值之间用空格分开。

子项常用属性

1.flex 子项目占的份数
2.align-self控制子项自己在侧轴的排列方式
3.order 定义子项的排列顺序(前后顺序)

flex 子项占的份数

描述:flex属性定义子项目分配父盒子的剩余空间。在父项中,有一些子项会设置固定的宽高,有一些不会设置,flex属性用于设置分配父盒子中的剩余空间。,用flex表示占多少份数。属性值为数字,属性值为1时,表示占总数中的1份,默认值为0.
语法:.item {
    flex: 1;/* default0 */
}
示例1:
    <!-- html部分 -->
    <section>
        <div>1</div>
        <div>2</div>
        <div>3</div>
    </section>
    <!-- css部分 -->
    section {
        width: 60%;
        height: 80px;
        background-color: pink;
    }

    section:nth-child(1),
    section:nth-child(3) {
        width: 80px;
        height: 80px;
        background-color: skyblue;
    }

    section:nth-child(2) {
        /* 表示第二个div子元素将占据所有的父元素剩余空间,并且随着父元素的增大而变大,减小而缩小 */
        flex: 1;
    }
示例2:
    <!-- html部分 -->
    <div class="box">
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </div>
    <!-- css部分 -->
    .box {
        width: 60%;
        height: 80px;
        margin: 0 auto;
        background-color: pink;
    }

    .box span {
        /* 表示将父元素等比分成三分,每个span元素各占一份 */
        flex: 1;
    }
示例3:
    <!-- html部分 -->
    <div class="box">
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </div>
    <!-- css部分 -->
    .box {
        width: 60%;
        height: 80px;
        margin: 0 auto;
        background-color: pink;
    }

    .box span {
        flex: 1;
    }
    .box:nth-child(2) {
        /* 表示将父元素分为四份,第二个span标签占两份 */
        flex: 2;
    }

align-self 控制子项自己在侧轴上的排列方式

描述:align-self属性允许单个项目与其它项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
语法:div:nth-child(2) {
    <!-- 设置自己在侧轴上的排列方式 -->
    align-self: flex-end;
}

order 属性定义项目在加载时的排列顺序

描述:定义项目在加载时的排列顺序,数值越小,排列越靠前,默认为0。
注意:和z-index不一样。
语法:.item {
    order: <number>;
}

rem 布局

rem 单位

描述:rem是一个相对单位,类似于em,em是父元素字体大小,不同的是rem的基准是相对于html元素的字体大小。比如根元素(html)设置font-size=12px,非根元素设置width=2rem,转换成px表示就是width=24px;
优势:父元素的大小可能不一致,但是整个页面只有一个html,可以很好的控制整个页面的元素大小比例。
作用:1.页面布局中的文字大小能够随着屏幕大小的变化而变化。
    2.屏幕发生变化的时候,元素的高度和宽度等比例缩放。

媒体查询 Media Query

描述:通过媒体查询方法判断屏幕的大小,根据屏幕的大小改变html元素中的字号大小。
1.使用媒体查询@media查询,可以针对不同的媒体类型定义不同的样式,
2.@media可以针对不同的屏幕尺寸设置不同的样式。
3.当重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。

语法:@media mediatype and|not|only (media feature) {
    CSS-Code;
}
语法规范:1.使用@media开头,注意@符号。
    2.mediatype 表示媒体类型(手机,平板等)
    3.关键字 and not only
    4.media feature 媒体特性 必须有小括号包含(比如宽度,高度等)
示例1:在屏幕设备中,判断屏幕尺寸大于等于800px的时候,背景颜色为粉红色。
    @media screen and (min-width:800px) {
        body {
            background-color: pink;
        }
    }
示例2:在屏幕设备中,判断屏幕尺寸小于等于600px的时候,背景颜色为红色;
    @media screen and (max-width: 600px) {
        body {
            background-color: red;
        }
    }

mediatype 媒体类型

描述:将不同的终端设备划分为不同的媒体类型。

说明
all 用于所有设备
print 用于打印机和打印预览
screen 用于电脑屏幕,平板电脑,智能手机等

关键字 and|not|only

描述:将媒体类型或多个媒体特性链接到一起作为媒体查询的条件。
and:将多个媒体特性链接到一起,相当于"且"的意思。
not:排除某个媒体类型,相当于"非"的意思,可以忽略。
or:可以测试多个媒体查询的条件,只要有一个成立就执行。相当于"或"的意思。
only:指定特定的媒体类型。

媒体特性

描述:每种媒体都具有不同的特性,根据不同的媒体类型的媒体特性设置不同的展示风格。
注意:max-width和min-width都包含等于的关系

说明
width 定义输出设备中页面可见区域的宽度
max-width 定义输出设备中页面可见区域的最大宽度
min-width 定义输出设备中页面可见区域的最大宽度

媒体查询引入资源

描述:当项目中css比较繁琐的时候,可以针对不同的媒体使用不同的样式表,原理就是直接在link中判断设备的尺寸,然后引用不同的css文件。
语法:<link rel="stylesheet" href="styleA.css" media="media-type and|not|or (media feature)">
示例:<link rel="stylesheet" href="styleA.css" media="screen and (min-width: 400px)">

rem 适配目标

1.适配目标是什么:让一些不能等比自适应的元素,当设备尺寸发生变化的时候,等比例适配当前的设备。
2.怎么达到这个目标:使用媒体查询,根据不同设备按比例设置不同的html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小发生变化后,元素尺寸也发生变化,达到元素自适应等比缩放。
3.实际开发中的应用:
    1.按照设计稿于设备宽度的比例,动态计算并设置html跟标签的字体大小
    2.css中,设计稿元素的宽高,相对位置等取值,按照同等比例换算为rem单位的值。

rem 适配方案

1.根据设计稿,将设计稿分成15等份。一般参照750px的设计稿。
2.html字号大小 = 750px / 15
3.根据媒体查询,针对不同的屏幕尺寸,除以相同的15等份,设置不同的字号。

less 简介

描述:Less(leaner style sheets的缩写),是一门css扩展语言,也称为css预处理器。作为css的一种形式的扩展,没有减少css的功能,在现有的css的语法上,加入了程序式语言的特性。它在css的语法上,引入了变量,Mixin(混入),运算以及函数等功能。简化了css的编写,以及降低了css的维护成本,用更少的代码做更多的事情。

Less 使用

1.创建一个后缀名为.less的文件,在这个.less文件中书写less语句。

Less 变量

命名规范:
    1.必须有@为前缀。
    2.不能包含特殊字符。
    3.不能以数字开头
    4.大小写敏感。
    @color: pink
使用规范:
    body {
        color: @color
    }

Less 编译

描述:less包含一套自定义的语法及解析器,根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译成对应的css文件。
编译方法:
    1.在终端中通过命令进行编译:lessc style.less > style.css

Less 嵌套

描述:less嵌套语法中相当于平常css语法中的空格选择后代选择器的写法。
语法:#header {
    .nav {
        font-size:12px
    }
}
css语法:#header .nav {font-size:12px}

Less 运算

描述:任何数字,颜色或者变量都可以参与运算。Less提供了加减乘除四种运算方式。
注意:1.参与运算的两个数字,可以一个有单位,一个没有单位,最终单位就是唯一的那个单位。
    2.参与运算的两个数字,如果两个数字都有单位,且单位不相同,最终的单位取第一个数字的单位。
    3.less的运算符左右必须加空格.

flexible.js

原理:把当前设备划分成10等份,在不同设备下,比例是一致的。比如当前设计稿是750px,我们只需要把html文字大小设置成75px(750px / 10)就可以,里面页面元素的rem值为页面元素的px值/75.剩下的会由flexible.js计算。

使用方法:下载flexible.js的压缩包,解压之后,将文件中的index.js文件放入到项目文件中,在html文件中导入index.js.

注意:由于flexible会根据屏幕自动计算font-size大小,当超出设计稿尺寸的时候,如750px,字体仍然会执行flexible中的计算规则,此时需要自定义视图窗口,当大于750px的时候,font-size最大字体为75px。由于flexible设置的css样式是行内样式,优先级是最高权重,所以在自己设置字体大小的时候,还需要通过!important,增加css的权重。

示例:
    @media screen and (min-width:750px) {
    html {
        font-size: 75px !important;
    }
}

git地址:https://github.com/amfe/lib-flexible

VSCode插件:在css文件中,将px单位自动转换为rem单位。cssrem。安装完插件之后需要根据设计图的大小设置默认的字体大小。
设置方法:设置-cssrem-root font-size

响应式布局

描述:在pc端和移动端共用一套代码,但是在pc端和移动端自适应屏幕的宽度,从而加载不同的样式和效果。

响应式布局原理

原理:使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而设配不同的设配。

设备划分 尺寸区间
超小屏幕(手机) <768px
小屏设备(平板) >=768px~<992px
中等屏幕(桌面显示器) >=992px~<1200px
宽屏设备(大桌面显示器) >=1200px

响应式布局容器

描述:响应式需要一个父级作为布局容器,来配合子级元素来实现变化效果,原理就是在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列方式和大小,从而实现不同屏幕下,看到不同的页面布局和样式变化。

尺寸划分:
    超小屏幕(手机,小于768px):设置宽度为100%
    小屏幕(平板,大于等于768px):设置宽度为750px
    中等屏幕(桌面显示器,大于等于992px):设置宽度为970px
    大屏幕(大桌面显示器,大于等于1200px):设置宽度为1170px

Bootstrap 简介

中文官网:http://www.bootcss.com/
官网:http://getbootstrap.com

Bootstrap 使用

使用四部曲:
    1.创建文件夹结构。
        需要将下载的Bootstrap文件加载到项目文件夹中。
    2.创建html骨架结构。可以直接复制文档中的基本模板部分。
        <!-- 要求当前网页使用IE浏览器最高版本的内核来渲染 -->
        <meta htto-equiv="X-UA-Compatible" content="IE=edge">
        <!-- 视口设置:视口的宽度和设备一直,默认的缩放比例和PC端一致,用户不能自行缩放 -->
        <meta name="viewport" content="width=device-width. initial-scale=1,user-scalable=0">
        <!--[if lt IE9]>
            <!-- 解决ie9以下浏览器对html5新增标签的不识别,并导致css不起作用的问题 -->
            <script src="https://oss.maxcdn.com/html5shiv/3.7.2/htmnl5shiv.min.js"></script>
            <!-- 解决ie9以下浏览器对css3 Media Query 的不识别 -->
            <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
    3.引入相关样式文件。
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
    4.书写内容。
        直接使用Bootstrap预先定义好的样式。
        修改Bootstrap原来的样式,注意权重问题。
        了解Bootstrap定义了哪些样式,以及这些样式能实现什么样的效果。

Bootstrap 布局容器

Bootstrap需要为页面内容和栅格系统包裹一个.container容器,它提供了两个做此作用的类。在使用的时候直接给元素添加这个类名就可以.
1.container类,设置响应式布局,固定宽度。
2.container-fluid类,流式布局容器,适用于制作移动页面开发。

Bootstrap 栅格系统

描述:将页面布局划分为等宽的列,然后通过列数的定义来模块化页面布局。Bootstrap提供了一套响应式、移动设备有限的流式栅格系统,随着屏幕或视口尺寸的增加,系统会自动分为最多12列。

栅格系统选项参数

描述:栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,页面内容就可以放入这些创建好的布局中。
在container类元素下指定类名为row的行元素,即可以使用Bootstar布局。
一行中按照不同的屏幕划分为1-12等份。
row下的子元素可以分配栅格,当列大于12的时候,多余的列会被作为一个整体另起一行排列,每一列默认有左右15像素的padding。
可以同时为一列指定多个设备的类名,以便划分不同分数。
例如 class="col-sm-4 col-xs-6" 表示在小屏设备占4列,在超小屏幕占6列。

列的类名格式:.col-xs-4 表示在超小屏幕中占4个栅格。
描述 超小屏幕 小屏设备 中等屏幕 宽屏设备
.container最大宽度 自动(100%) 750px 970px 1170px
类前缀 .col-xs- .col-sm- .col-md- .col-lg-
列数 12 12 12 12

栅格系统列嵌套

描述:在栅格系统中,可以将某一列的内容再次设置.row类名,将内容再次嵌套。简单理解就是一个列内再分成若干份小列,可以通过添加一个新的.row元素和一系列.col-sm-*元素到已经存在的.col-sm-*元素内。相当于给父级元素设置了display:flex属性,在子元素内同样也可以设置成display:flex。

栅格系统列偏移

描述:使用.col-md-offset-*类可以将列向右偏移,这些类实际是通过使用*选择器为当前元素增加了左侧的边距(margin)。
例如:.col-md-offset-5 表示元素添加了"5列"的左边距。

栅格系统 列排序

描述:栅格系统中,展示顺序一般是根据书写顺序决定的,可以通过使用.col-md-push-*往右推和.col-md-pull-*往左拉两个类就可以改变列的顺序。

Bootstrap 响应式工具

描述:为了加快对移动设备有好的页面开发工作,利用媒体查询功能,并使用这些工具类可以方便的针对不同设备展示活隐藏页面的内容。
类名 超小屏 小屏 中屏 大屏
.hidden-xs 隐藏 可见 可见 可见
.hidden-sm 可见 隐藏 可见 可见
.hidden-md 可见 可见 隐藏 可见
.hidden-lg 可见 可见 可见 隐藏
类名 超小屏 小屏 中屏 大屏
.visible-xs 可见 隐藏 隐藏 隐藏
.visible-sm 隐藏 可见 隐藏 隐藏
.visible-md 隐藏 隐藏 可见 隐藏
.visible-lg 隐藏 隐藏 隐藏 可见
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容