• css 理解盒模型


    标准模式:

      总宽度/高度=width/height+padding+border+margin

      

    怪异模式(quirks 模式):

      总宽度/高度=width/height + margin = 内容区宽度/高度 + padding + border + margin

       

    设置盒子模型可通过 css3属性: box-sizing: content-box(默认值) | border-box | inhert | initial | unset;

    读取文档模式: document.compatMode, 详细请见: https://developer.mozilla.org/zh-CN/docs/Web/API/Document/compatMode

    我们来假设一下, 如果给一块画布,要对画布中内容进行布局排版, 你会怎么做?

    在一个网页中, 画布内容也即我们的 dom节点; 简单点可以把 每一个节点看作一个矩形,一个节点一个大矩形排下来...;

    但这样肯定是不够的, 有些内容可能希望独占一行, 有些可能想排在一个圆中, 或是把内容排在一个块中, 或是围绕一条路径排成一个星星

    简单点或是考虑性能, 还是以矩形或三角形为基本单元最为合适, 其他的形状可以通过基本单元拼凑出来;

    基本的模型就可以确定了: 矩形 (三角形不太适合人类理解和使用);

    那么矩形和矩形之间呢,矩形里面呢?

    矩形之间我们可以指定间隔,矩形里面如果没有内容, 可以填充空像素啊, 有内容也可以填充空像素;

    基本模型可以再增添一个外边距, 内边距;

    可如果要对矩形描边呢? 要像 ps一样来一个内描边/外描边/中心描边, 这个描边是否是否要把内、外边距挤一点出来?如果挤出来该挤谁?

    算了还是不挤了吧,自个画自个; 基本模型再增加一个: 描边;

    内外边距, 描边之间还有要加的东西吗?我, 投影! 

    内投影,外投影都来一个吧,然后我要做一个浮雕效果! 搞一个带点立体感的矩形!

    可以,可你这个投影要些什么啊?我要一个方向, 起点坐标, 终点坐标, 对应颜色, 还有颜色过渡的一个线性过渡或三次,或其他过渡;

    这又有方向, 起点,终点; 实现上就需要把阴影在方向上占据的像素值算出来, 那要加到哪一个呢?

    额,内阴影加在描边和内边距之间

          外阴影加在描边和外边距之间

          四个方向占据的像素值根据阴影方向(角度)来个 tan, sin 之类算出每个方向占据的像素值

          如果有多个阴影,按照上面的三个步骤再来一次, 每个方向占据的像素值取各自的最大值

          ......这样算出来有点麻烦,

    算了,我不要独立占据位置了,把我画出来就行啦!

    好像没有其他要加的东西了吧,那基本模型就这么定了! 声明一下: 外边距 + 描边 + 内边距 + 内容

    以此为基础 , 便可以排好版面了; 等等, 这样全部顺序排版, 如果要有层叠的需求呢?某一块要在另一个的上面,可能还需要混合效果! 来个正片叠底, 或是剪贴蒙版之类的操作!

    嗯,很好的提议, 层叠的可以再加个 z层; (x, y, z) ; 分层画, 层与层之间排版变化互不影响, 改下混合效果就行了!

    正片叠底或是剪贴蒙版之类可以同样基于 z 层, 改下混合效果或直接跳过蒙版之外的像素点;

    参考: https://developer.mozilla.org/zh-CN/docs/Web/CSS/box-sizing

        http://blog.csdn.net/quguang65265/article/details/50970601

  • 相关阅读:
    图片延迟加载(lazyload)的实现原理
    jquery lazyload延迟加载技术的实现原理分析
    目前为止用过的最好的Json互转工具类ConvertJson
    ASP.NET前台代码绑定后台变量方法总结
    使用MySql时会遇到中文乱码的问题
    asp.net 时间格式大全
    asp.net 记录用户打开和关闭页面的时间
    分页 排序 表格 多功能
    使用Jquery实现可编辑的表格 并使用AJAX提交到服务器修改数据
    Hive和Hbase
  • 原文地址:https://www.cnblogs.com/liuyingde/p/7899288.html
Copyright © 2020-2023  润新知