css部分

从15年下半年入行到现在差不多快一年了,在公司做着页面仔的工作以制作移动端页面为主,从刚开始的只知道一个用table方法让元素垂直居中,到逐渐摸索出了一些方法技巧,一路过了遇到过不少问题,每次遇到问题都会到网上搜索一些资料,解决了的方案自己都会记录下来,慢慢的也积累了一些方法,所以对css的应用可能更偏向理论,加上自己语言组织能力差要我写一些对css的理解我也憋不出个所以然,自己反省一下说到底可能还是自己理解不够。因此有了下面这篇文章,最后把个人觉得收获较大的rem写移动端页面的方法和自己积累的一些方法贴出来,希望对其他看到这篇文章的朋友一些帮助。

实现元素的居中的方法:

水平居中:

行内元素的水平居中在其父元素设置text-align:text;

块级元素水平居中设置其margin-left和margin-right为auto

绝对定位+margin:auto(需设置宽高)

<div class="content">
    <div class="box"></div>
</div>
.content{
    width: 400px;
    height: 200px;
    position: relative;
    background-color: #ccc;
}
.box{
    width: 100px;
    height: 100px;
    position: absolute;
    margin: auto;
    bottom: 0;
    left:0;
    right:0;
    top:0;
    background-color: #eee;
}

绝对定位+负margin(需设置宽高,负值为宽高/2)

.content{
    width: 400px;
    height: 200px;
    position: relative;
    background-color: #ccc;
}
.box{
    width: 100px;
    height: 100px;
    position: absolute;
    left:50%;
    top:50%;
    background-color: #eee;
    margin-left: -50px;
    margin-top: -50px;
}

绝对定位+tranfrom(不需设置宽高,有内容撑开高度即可)

.content{
    width: 400px;
    height: 200px;
    position: relative;
    background-color: #ccc;
}
.box{
    position: absolute;
    left:50%;
    top:50%;
    background-color: #eee;
    transform: translate(-50%,-50%);
}

display:table;(垂直居中)

.content{
    width: 400px;
    height: 200px;
    background-color: #ccc;
    display: table;
}
.box{
    display: table-cell;
    vertical-align: middle;
    background-color: #eee;
}

flex(水平垂直居中,不需设置子元素宽高)

margin填充水平垂直居中(需设定子元素和父元素宽高,margin值为父元素高度-子元素高度/2 auto)

.content{
    width: 400px;
        height: 200px;
        background-color: #ccc;
        overflow: hidden;
}
.box{
    width: 100px;
    height: 100px;
    margin: 50px auto;
}

padding填充水平垂直居中(需设定子元素和父元素宽高,padding值为父元素宽度-子元素宽度/2 父元素高度-子元素高度/2)

 

.content{
    width: 400px;
        height: 200px;
        background-color: #ccc;
        overflow: hidden;
}
.box{
    width: 100px;
    height: 100px;
    padding: 50px 150px;
}

盒模型

html中的每个元素在页面上渲染为一个矩形盒子,每个盒子都通过四个边界来描述。从内到外依次为:内容区域(content)、内边距(padding)、边框(border)、和外边距(margin)。

块级元素盒子和行内元素盒子

块级元素盒子:
1.占一整行
2.可以设置width,height,margin,padding,border属性
3.默认宽度是容器的100%

行内元素盒子:
1.和其他行内元素盒子在同一行内
2.高度和宽度就是内容的高度和宽度
3.可以设置margin-left和margin-right属性,无法设置margin-top和margin-bottom属性(替换元素除外)

外边距合并

当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。

外边距合并的几种情况

1、当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并(兄弟元素)

2、当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上下外边距也会发生合并。(父子元素)

3、假设有一个空元素,它有外边距,但是没有边框或填充。在这种情况下,上外边距与下外边距就碰到了一起,它们会发生合并(空元素)

4、如果这个外边距遇到另一个元素的外边距,它还会发生合并

postion

positon的默认值为static,positon:absolute相对于第一个非static父元素定位,且会脱离文档流,如果没找到非static的父元素时它会依次向上找,直到body元素。

position:relative定位的元素会处在正常的文档流中,设置的偏移量会相对其未定位时的位置偏移。

positon:fixed相对浏览器窗口的定位

position中的absolute与float两个的用法很容易让人混淆,因为这两个css有很多共同的特点。首先是他们都会脱离文档流,正常的文档流是水平或垂直方向,可以想象成x轴和y轴方向的排列,一旦设设置float或absolute元素就会从正常的文档流脱离,漂浮起来,就想z轴一样。其次position:absolute和float会隐式的改变display类型不论之前什么类型的元素(display:none除外),只要设置了position:absolute和float中任何一个,都会让元素以display:inline-block的方式显示。最直接的影响就是元素宽度缩小了。

float与absolute都能改变正常的文档流,但float不会让元素浮到另一个元素上,而absolute则会让元素产生覆盖在另一个元素上,且float可通过clear清楚浮动造成的影响,而absolute则不能清除,所以float往往用来对页面的布局,absolute用来写遮罩等,用:after来清楚float浮动是一种比较好的选择。

.clearFloat:after{
    content: ‘.‘;
    display: block;
    font-size: 0;
    clear:both;
    height: 0;
}

css3动画

css3提供了两种转换:2D和3D。效果主要分: translate(位移), rotate(旋转), scale(缩放), skew(倾斜)四种效果的2D和3D转换。tansfrome设置相应的值就可以得到相应的效果,多个效果以空格分开不分顺序。(自己掌握也是w3c文档里面都有的知识点,就不做过多的累赘了)

网易移动端适配方案

用rem单位,通过Js在网页加载时设置html的font-size。

var deviceWidth = document.documentElement.clientWidth;

if(deviceWidth > 640) deviceWidth = 640;(之所以这么干,是因为当deviceWidth大于640时,则物理分辨率大于1280,应该去访问pc网站了)

document.documentElement.style.fontSize = deviceWidth / (设计稿宽度/100) + ‘px‘;

元素的尺寸设置为元素在设计稿上的尺寸/100em 例如:设计稿上宽为360px  css:widht:3.6rem;

ios系统上微信浏览器audio和video不能自动播放

之前在微信上做一个播放背景音乐的网页遇到的比较头疼的问题,ios为避免自动播放音乐或视频给用户带来巨大的流量支出,屏蔽了audio和video的自动播放,在微信浏览器上找到了一个比较好的解决方案

<audio id="Jaudio" class="media-audio" src="http://game.163.com/weixin/gfxm3_gc/images/bg.mp3" preload loop="loop"></audio >

  

function audioAutoPlay(id){
    var audio = document.getElementById(id),
        play = function(){
        audio.play();
        document.removeEventListener("touchstart",play, false);
    };
    audio.play();
    document.addEventListener("WeixinJSBridgeReady", function () {//微信
       play();
    }, false);
    document.addEventListener("touchstart",play, false);
}
audioAutoPlay(‘Jaudio‘);

input file 本地预览

function previewImage(file) {
    var showimg = document.getElementById(‘show-img‘);
    var reader = new FileReader();
    reader.onload = function(evt) {
        showimg.src = evt.target.result;
    }
    reader.readAsDataURL(file.files[0]);
}
<input onchange="previewImage(this)" type="file"/>

css3实现渐变的iPhone滑动解锁效果

<p>&gt;&nbsp;Slide To Unlock</p>
<style>
        p{
            width:50%;
            margin:0 auto;
            line-height:50px;
            font-size:50px;
            text-align:center;

            -webkit-background-clip: text;    /*按文字裁剪*/
            -webkit-text-fill-color: transparent;    /*文字的颜色使用背景色*/    

            background-color:#19385c;    /*设置一个背景色*/
            background-image: -webkit-linear-gradient(-45deg, rgba(0, 0, 0, 0.6) 30%, #aff0ff 50%, rgba(0, 0, 0, 0.6) 70%);        /*设置渐变的背景,按对角线渐变*/

            background-blend-mode: hard-light;    /*设置背景为混合模式下的强光模式*/
            background-size: 200%;

            -webkit-animation: shine 4s infinite;    /*给背景添加动画改变位置*/
        }

        @-webkit-keyframes shine {
          from {background-position: 100%;}
          to {background-position: 0;}
        }
    </style>

判断是否为微信浏览器内核

function is_weixn(){
    var ua = navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i)==‘micromessenger‘) {
        return true;
    } else {
        return false;
    }
}

  

单行文本溢出和多行文本溢出省略号显示

overflow: hidden;white-space: nowrap;text-overflow: ellipsis;
//多行
.intwoLine{
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 3;//多少行溢出加省略号
    -webkit-box-orient: vertical;
}
时间: 2024-10-08 10:04:08

css部分的相关文章

css中的px、em、rem 详解

概念介绍: 1.px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选.Windows系统默认是96dpi,Apple系统默认是72dpi. 2.em(相对长度单位,相对于当前对象内文本的字体尺寸):是一个相对长度单位,最初是指字母M的宽度,故名em.现指的是字符宽度的倍数,用法类似百分比,如:0.8em, 1.2em,2em等.通常1em=16px

CSS样式的优先级

1.相同权值情况下,CSS样式的优先级总结来说,就是--就近原则(离被设置元素越近优先级别越高): 内联样式表(标签内部)> 嵌入样式表(当前文件中)> 外部样式表(外部文件中). 2.权值不同时,浏览器是根据权值来判断使用哪种css样式的,哪种样式权值高就使用哪种样式. 下面是权值的规则: 标签的权值为1,类选择符的权值为10,ID选择符的权值最高为100.例如下面的代码: p{color:red;} /*标签,权值为1*/ p span{color:green;} /*两个标签,权值为1+

CSS 之怀疑自己的审美 2 (Day50)

阅读目录 伪类 选择器的优先级 css 属性操作 一.伪类 anchor伪类:专用于控制链接的显示效果 ''' a:link(没有接触过的链接),用于定义了链接的常规状态. a:hover(鼠标放在链接上的状态),用于产生视觉效果. a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接. a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态. 伪类选择器 : 伪类指的是标签的不同状态: a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态

CSS颜色代码大全

CSS颜色代码大全 颜色代码表(一): EEEEEE FFCCFF FF66FF FF00FF DDDDDD FFCCCC FF66CC FF00CC CCCCCC FFCC99 FF6699 FF0099 BBBBBB FFCC66 FF6666 FF0066 AAAAAA FFCC33 FF6633 FF0033 999999 FFCC00 FF6600 FF0000 888888 CCCCFF CC66FF CC00FF 777777 CCCCCC CC66CC CC00CC 666666

如何使用Flexbox和CSS Grid,实现高效布局

CSS 浮动属性一直是网站上排列元素的主要方法之一,但是当实现复杂布局时,这种方法不总是那么理想.幸运的是,在现代网页设计时代,使用 Flexbox 和 CSS Grid 来对齐元素,变得相对容易起来. 使用 Flexbox 可以使元素对齐变得容易,因此 Flexbox 已经被广泛使用了. 同时,CSS Grid 布局也为网页设计行业带来了很大的便利.虽然 CSS Grid 布局未被广泛采用,但是浏览器逐渐开始增加对 CSS Grid 布局的支持. 虽然 Flexbox 和 CSS Grid 可

css基础

css绝对是一个能够写到爆炸的东西,so,机智的小北方才不会写各种css样式具体的效果,相比之下更推荐大家记一些常用的key,至于效果,每次用的时候百度下就可以了, css的作用是对符合条件的标签进行渲染,那么首先就要匹配到对应标签啦,我萌有三种基础的模式来匹配希望改变样式的标签 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8">

前端 css 垂直居中及自适应问题

此css作用为将下面div结构中的Container-fluid背景自适应屏幕,content自适应居中 1.Div结构 all Head Container-fluid Content Under <div id="all">   <div  class="head" style="height: 81px;width: 100%;min-width: 1000px;position: relative;">      

css遮罩层

父元素:position:fixed; 让子元素居中对齐:position:absolute;top:0;bottom:0;left:0;right:0;margin:auto; <style> .loading{width:100%;height:100%;position:fixed;top:0;left:0;z-index:100;background:#fff;} .loading .pic {width:50px;height:50px;background:url(images/l

CSS作用域问题

今天去长虹面试,面试官问了一个问题,就是给一个div在三个地方设置不同的background,最后div显示的颜色是哪一个?当时我第一次回答的是最后一个,但是后来又改口说是第一个,回来一验证,证明自己错了,今天就总结一下CSS样式的作用域问题吧. 首先对HTML引入样式的优先级排序,数字越大优先级越高#### 样式优先级1. 浏览器缺省设置2. 外部样式表3. 内部样式表(位于 <head> 标签内部)4. 内联样式(在 HTML 元素内部) ---#### 外部样式表>浏览器缺省设置H

CSS学习

CSS css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:style = 'key1:value1;key2:value2;' 在标签中使用 style='xx:xxx;' 在页面中嵌入 < style type="text/css"> </style > 块 引入外部css文件 css写在head里面,style标签中写样式 ID用