闻心阁

一蓑烟雨看苍生,半壶浊酒笑红尘

CSS 中 margin 与 padding 的百分比

2018-01-10 约 1 分钟读完 搬砖秘籍
最近做开发的时候用到了多次 margin: xx% 来做自适应的网页布局,但这个东西有时候出来的结果并不是自己所想的,于是去百度了一下这个百分比的计算基准,结果发现了一个比较好玩的点。 示例HTML <div class="boxer"> <div class="box"></div> </div> 示例CSS .boxer { width: 600px; height: 400px; background: red; } .box { width: 200px; height: 100px; background: blue; // padding: 10%; //padding 和 margin 一样好玩 margin: 10%; } 猜测结果 .box 的 margin 为:40px 60px 40px 60px 结果 是的结果是 60px 60px 60px 60px,同样 padding 也是一致。 why w3c就是这么规定的。 margin - CSS | MDN

不定宽高元素的水平垂直居中

2018-01-10 约 1 分钟读完 搬砖秘籍
前端开发中水平垂直居中是绕不开的坎,尤其是宽高不定的元素,之前听说过总总办法,由于自己懒,也没一一去试,今天就做一个总结。 PS:纯CSS实现,布局的问题不应试交给JavaScript(除非某些破不得已的情况)。 预期结果 HTML代码 <div class="panel"> <div class="box"></div> </div> Flex 方法 .panel { width: 600px; height: 400px; background: red; display: flex; justify-content: center; align-items: center; } .box { width: 83%; height: 79%; background:green; } Flex 是最简单的实现方法,由于目前通常是移动开发,这也是我的首选的方法。关于 Flex 布局可以参考:Flex 布局教程 margin: auto 方法 .panel { width: 500px; height: 400px; background: red; position: relative; } .box { width: 76%; height: 79%; background: green; position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; } 这算是 css 的一个奇技淫巧,非移动端开发下首选。 继续阅读

使用 Less 替换 wxss 开发微信小程序

2018-01-10 约 1 分钟读完 搬砖秘籍
微信小程序开发中默认使用的 wxss 做为样式文件,这货对应成前端就是 CSS 文件,所以通常写 wxss 文件的时候会很痛苦。因为我已经完全放弃了小程序自带的编辑器(参考:wxapp.vim——使用Vim开发小程序利器),于是尝试在微信小程序开发中引入 Less 来自动编译 wxss。 思路 启用一个 gulp 任务,在文件更新的时候自动将 .less 文件编译成 .wxss 文件。 主要用到了 2 个 gulp 插件,gulp-less 和 gulp-rename。前者用来编译 Less 文件,后者用来将编译出来的 css 文件重命名为 .wxss。 实现 代码: var lessPath = ['./app/**/**/*.less', './app/**/*.less']; /** * 本地监视less的文件 */ gulp.task('less', function () { return gulp.src(lessPath) .pipe($.plumber()) .pipe($.less()) .pipe($.rename(function (path) { path.extname = '.wxss'; })) .pipe(gulp.dest('./app')); }); // 静态服务器 gulp.task('style', function () { gulp.watch(lessPath, ['less']); }); 使用 开发前运行 gulp style,剩下的事情就是写 Less 了,再不也用管什么 wxss 了。

关于CSS中box-sizing属性的一点心得

2016-05-15 约 1 分钟读完 搬砖秘籍

最近需要写这样一个布局:一个父元素,里面有两个子元素,两个子元素的宽度为父元素的一半。这在CSS中倒是一个很简单的问题,所以很容易就有如下代码。

<style type="text/css">
  *{
    padding : 0;
    margin  : 0;
  }
  #outer{
    width      : 600px;
    height     : 300px;
    background : red;
    color      : white;
  }
  #outer:after{
    content : "";
    clear   : both;
  }
  #in1{
    width      : 50%;
    height     : 80%;
    float      : left;
    background : blue;
  }
  #in2{
    width      : 50%;
    height     : 80%;
    float      : right;
    background : green;
  }
</style>
<div id="outer">
  <div id="in1">
    IN1
  </div>
  <div id="in2">
    IN2
  </div>
</div>
继续阅读