CSS学习

对于css的学习,感谢MDNW3school提供的优秀资料
随着学习的深入,此文章持续更新...

css中一些踩过的坑:

  1. inline是按照基线对齐的,可通过vertical-align调节

  2. 2个inline-block中间的空格是字体大小空格,将父元素字体大小设为0可取消

  3. 优先使用overflow:auto 不同系统处理不一样

  4. 个人觉得css处理文本长度不如js处理稳定

  5. 伪元素::before是真的一个元素,伪类:hover是一种状态

  6. hack处理....愿世界没有ie...建议找一个不那么在意兼容的工作

  7. float布局会导致父元素高度坍塌,可以使用overflow:auto或者添加下方这个伪元素处理

::after {
  content: '';
  display: block;
  clear: both;
}

最佳显示宽度

首先,网页的缺省宽度,确定为满足1024px宽度的显示器。这不仅因为1024x768是现在最常见的分辨率,还因为这个宽度对网页最合适:
1)它放得下足够的内容,足够三栏的布局;
2)单行文字不宜太长,1024px已是极限,否则容易产生阅读疲劳;
3)在当前的互联网带宽条件下,网页难以采用大分辨率所要求的大尺寸图片。

其次,网页宽度会在780px-1260px的范围内,自动变化,即最小不小于780px,最大不超过1280px。

最后,对于更大的分辨率,网页内容会自动居中。

下面就是CSS文件的写法,只要4行。需要注意的是,这几行的语句都针对整个页面,即body标签或者最外层的那个div区域。

margin: 10px auto;

这一行保证了网页在任何分辨率下,都会居中。

min-width: 780px;
max-width: 1260px;

这二行规定了网页的最小和最大宽度。
另外,如果想让内层的各个区块也自动伸缩,它们的宽度可以采用百分比的形式,比如:

#div-left{
    width:50%;
}

#div-right{
    width:50%;
}

媒体查询-响应式开发

响应式设计就是一套 CSS 根据当前的分辨率选择不同的样式
媒体查询主要用来:

  • 检测媒体的类型, 比如 screen, tv等
  • 检测布局视口的特性, 比如视口的宽高分辨率等
<style>
@media all and (min-width: 200px) and (max-width: 300px){
    body {
        background: red;
    }
}

/* 网易移动端字体设置 */
@media screen and (max-width: 321px) {
    body {
        font-size:16px
    }
}

@media screen and (min-width: 321px) and (max-width:400px) {
    body {
        font-size:17px
    }
}

@media screen and (min-width: 400px) {
    body {
        font-size:19px
    }
}
/* 横屏设置
orientation:portrait | landscape
portrait:指定输出设备中的页面可见区域高度大于或等于宽度
landscape: 除portrait值情况外,都是landscape
 */
@media only screen and (orientation: landscape) {
    body {
        background-color: lightblue;
    }
}
</style>

上面代码中, all 是媒体类型, 代表任何设备
and 是逻辑操作
意思是, 对于任何设备, 在宽度在 200-300 的范围内应用这个样式


伪类

a:link   { color: white; text-decoration: none; } /*未访问--去下划线*/
a:visited{ color: black; } /*已访问--去下划线*/
a:hover  { color: red; cursor: pointer; } /*悬停--鼠标样式*/
a:active { color: lightblue; } /*选定*/
a.class:visited {color: white;}    /* 独立伪类 */

定位 position

描述
static 默认 static
relative 相对定位 可相对自身偏移
absolute 完全绝对定位, 忽略其他所有东西, 往上浮动到 非 static 的元素
fixed 基于 window 的绝对定位, 不随页面滚动改变

static 元素可以用 top left bottom right 属性来设置坐标
static 元素可以用 z-index 属性来设置显示层次

  • e.pageX——相对整个页面的坐标
  • e.clientX——相对可视区域的坐标
  • e.offsetX——相对当前坐标系的border左上角开始的坐标

常用css

 /*截断文本 max-width:100%;*/
.truncate-text {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  width: 200px; 
}

 /*默哀日专用灰白色滤镜效果 */
html.o2_gray {
    -webkit-filter: grayscale(100%);
    filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
}

/*隐藏滚动条 webkit*/
.scroll::-webkit-scrollbar {
    width: 0;
    height: 0;
}

/*禁止ios弹出系统窗 webkit*/
-webkit-touch-callout: none;

/*禁止ios点击标签或者可执行脚本变色 webkit*/
-webkit-tap-highlight-color: none;

/*禁止iOS Safari 网页文本大小调整属性 webkit*/
-webkit-text-size-adjust: none;

/*截断多行文本省略号显示 webkit*/
p {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
   text-overflow: ellipsis;
}

/*移动端flex 自动3列布局   加上after伪类,解决最后一排数量不够两端分布的情况
<div class="tem-flex">
  <div class="tem-list" v-for="item in len">列表</div>
</div>
*/
.tem-flex {
    display: flex;
    flex-wrap: wrap;
    justify-content:space-between;
    text-align: justify;
}
.tem-flex:after {
    content: '';
    width: 30%;
}
.tem-list {
    width:30%;
    margin-bottom: 10px;
}


/*改变按钮和其他控件的外观,使其类似于原生控件  webkit*/
-webkit-appearance: none;  /*移除原生样式*/


/*input 默认元素设置*/
::-webkit-input-placeholder {
      color: #ababab;
}

/*小箭头*/
&::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 50%;
    margin-left: -5px;
    border-width: 5px;
    border-style: solid;
    border-color: black transparent transparent transparent;
}
 /*按钮按压效果*/
.button {
  display: inline-block;
  padding: 15px 25px;
  font-size: 24px;
  cursor: pointer;
  text-align: center;   
  text-decoration: none;
  outline: none;
  color: #fff;
  background-color: #4CAF50;
  border: none;
  border-radius: 15px;
  box-shadow: 0 9px #999;
}

.button:hover {background-color: #3e8e41}

.button:active {
  background-color: #3e8e41;
  box-shadow: 0 5px #666;
  transform: translateY(4px);
}
 /*2个css实现的loding效果 1rem=16px*/
@keyframes bouncing-loader {
  from {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0.1;
    transform: translateY(-1rem);
  }
}
.bouncing-loader {
  display: flex;
  justify-content: center;
}
.bouncing-loader > div {
  width: 1rem;
  height: 1rem;
  margin: 3rem 0.2rem;
  background: #8385aa;
  border-radius: 50%;
  animation: bouncing-loader 0.6s infinite alternate;
}
.bouncing-loader > div:nth-child(2) {
  animation-delay: 0.2s;
}
.bouncing-loader > div:nth-child(3) {
  animation-delay: 0.4s;
}

/* 第2个*/
@keyframes donut-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
.donut {
  display: inline-block;
  border: 4px solid rgba(0, 0, 0, 0.1);
  border-left-color: #7983ff;
  border-radius: 50%;
  width: 30px;
  height: 30px;
  animation: donut-spin 1.2s linear infinite;
}
 /*css内部计算器多用于列表*/
ul {
  counter-reset: counter;
}
li::before {
  counter-increment: counter;
  content: counters(counter, '.') ' ';
}
 /*文本选择的伪选择器*/
::selection {
  background: aquamarine;
  color: black;
}
 /*root等同于html,方便的全局变量定义*/
:root {
  --some-color: #da7800;
  --some-keyword: italic;
  --some-size: 1.25em;
  --some-complex-value: 1px 1px 2px whitesmoke, 0 0 1em slategray, 0 0 0.2em slategray;
}
.custom-variables {
  color: var(--some-color);
  font-size: var(--some-size);
  font-style: var(--some-keyword);
  text-shadow: var(--some-complex-value);
}

 /*悬停下划线动画效果*/
.hover-underline-animation {
  display: inline-block;
  position: relative;
  color: #0087ca;
}
.hover-underline-animation::after {
  content: '';
  position: absolute;
  width: 100%;
  transform: scaleX(0);
  height: 2px;
  bottom: 0;
  left: 0;
  background-color: #0087ca;
  transform-origin: bottom right;
  transition: transform 0.25s ease-out;
}
.hover-underline-animation:hover::after {
  transform: scaleX(1);
  transform-origin: bottom left;
}
 /*重置所有样式为默认*/
.reset-all-styles {
  all: initial;
}
 /*优先使用系统字体*/
.system-font-stack {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu,
    Cantarell, 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
 /*三角形*/

.triangle.tr  {
  width: 0;
  height: 0;
  border-top: 20px solid #333;
  border-left: 20px solid transparent;
  border-right: 20px solid transparent;
}

 /*聊天气泡尾巴*/
 .bubble-tail {
            position: absolute;
            top: 100%;
            left: -20px;
            width: 30px;
            height: 9px;
            border-width: 0;
            border-style: solid;
            border-color: transparent;
            margin-top: -4px;
            border-right-width: 6px;
            border-right-color: #fff;
            border-radius: 0 0 60px 0;
            color: #fff;
        }

/* 加载的...*/
dot {
    display: inline-block; 
    height: 1em;
    line-height: 1;
    text-align: left;
    vertical-align: -.25em;
    overflow: hidden;
}
dot::before {
    display: block;
    content: '...\A..\A.';
    white-space: pre-wrap;
    animation: dot 3s infinite step-start both;
}
@keyframes dot {
    33% { transform: translateY(-2em); }
    66% { transform: translateY(-1em); }
}
<div class="bouncing-loader">
  <div></div>
  <div></div>
  <div></div>
</div>
<!--第2个loding-->
<div class="donut"></div>

<ul>
  <li>List item</li>
  <li>List item</li>
  <li>List item</li>
</ul>

<p class="hover-underline-animation">Hover this text to see the effect!</p>

<div class="triangle"></div>


正在加载中<dot>...</dot>

动态加载同一图片不同大小
srcset可以使游览器动态加载不同大小图片
sizes可以告诉游览器这张图片的宽度,支持媒体查询

<img src="img/480.png" srcset="img/480.png 480w, img/800.png 800w, img/1600.png 1600w" sizes="(min-width:800ox) calc(100% - 200px), 50vw">

  <picture>
        <source media="(max-width:36em)" srcset="img/aaa.png 768w" />
        <source media="(orientation: landscape)" srcset="img/bbb.png 768w" />
        <img src="ccc.png" alt="">
    </picture>

less与sass

2种预css处理器,差别不大,less使用@声明变量,scss使用$声明
这里我常用的是less,简述一些用发:

// 嵌套就不说了...

// 变量与运算
@bgcolor: #blue;
@fontSize: 14px;

.box{
background: @bgcolor;
font-size: @fontSize + 2px;
}
// mixins
.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}

#menu a {
  color: #111;
  .bordered;
}

.post a {
  color: red;
  .bordered;
}

// extend  同样使用上面的例子
#menu a {
&:extend(.bordered)  //等价于上面的,不过是把公共代码提了出来
color: #111;
}

// loop  (less不支持for循环只能递归模拟)
.gen-col(@n) when (@n > 0){
        .gen-col(@n - 1);
        .col-@{n}{
                width: 1000px/12*@n;
        }
}
.gen-col(12);

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

推荐阅读更多精彩内容

  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,833评论 0 6
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    程序员poetry阅读 16,555评论 32 459
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,754评论 1 92
  • 赵洪文 柳欲抽绿梅凌风, 过冬春水透清澄。 芦花对镜恋旧容, 云暖数竿钓新春。 2017.2.12. ①迎河:穿于...
    鸿闻诗歌赵洪文阅读 179评论 0 0
  • 一、很久不化妆了 素颜霜 对,我要讲的就是素颜霜,真是个神器。一抹直接就遮瑕了,白的还特自然。没有选大牌的素颜霜,...
    三盏花阅读 279评论 2 1