简单学习CSS box model Box-sizing

CSS盒模型描述了一个为文档树中的元素生成的并根据可视化格式模型进行布局的矩形框

先上一张Banner.
CSS box model

<!–more–>

Box-sizing这个CSS3中出现的新属性,以前只是用用,没有仔细的去学习一下(出来混总是要还的),最近不算忙就补习一下。

整理了一个简单的脑图

CSS box model mind map

一个简单的demo

<p data-height="265" data-theme-id="0" data-slug-hash="EyaqaV" data-default-tab="css,result" data-user="Keystion" data-embed-version="2" class="codepen">See the Pen <a href="http://codepen.io/Keystion/pen/EyaqaV/">box-sizing</a> by Keystion (<a href="http://codepen.io/Keystion">@Keystion</a>) on <a href="http://codepen.io">CodePen</a>.</p>
<script async src="//assets.codepen.io/assets/embed/ei.js"></script>

content-box(标准盒模型)

box.width = content-box.width(300px)
box.height = content-box.height(300px)

box所占位置大小

宽:
margin-left(10px) + border-left-width(10px) + padding-left(10px) + content-width(300px) + padding-right(10px) + border-right-width(10px) + margin-right(10px) = 360px

高:
margin-top(10px) + border-top-width(10px) + padding-top(10px) + content-height(300px) + padding-bottom(10px) + border-bottom-width(10px) + margin-bottom(10px) = 360px

border-box

box.width = border-left-width(10px) + padding-left(10px) + content-width(260px) + padding-right(10px) + border-right-width(10px) = 300px
box.height = border-top-width(10px) + padding-top(10px) + content-height(260px) + padding-bottom(10px) + border-bottom-width(10px) = 300px

box所占位置大小

宽:
margin-left(10px) + border-left-width(10px) + padding-left(10px) + content-width(260px) + padding-right(10px) + border-right-width(10px) + margin-right(10px) = 320px

高:
margin-top(10px) + border-top-width(10px) + padding-top(10px) + content-height(260px) + padding-bottom(10px) + border-bottom-width(10px) + margin-bottom(10px) = 320px

wiki相关:

JavasSript 变量的寻址与传递

代码片段 1

var obj   = {};
    obj.x = 1;
    obj.y = 2;

function test (obj)  {
    obj.x = 111;
}

test(obj);
console.log(obj);
// result >>>>>>>>>  {x=111,y=2}

代码片段 2

var obj   = {};
    obj.x = 1;
    obj.y = 2;

function test(obj) {
    var obj2 = {};
        obj  = obj2;
}

test(obj);
console.log(obj)
// result >>>>>>>>>  {x=1,y=2}

代码片段一就不在讲述,但凡对值类型和引用类型有一定的了解的话,那这个应该是没疑问的。

<!–more–>

代码片段二有两个应该注意的地方:

1 test方法内变量的寻址

test方法内部可以取到三个变量,新定义了的对象obj2参数obj还有方法外的obj
这三个参数有一个特别要注意的地方是,后面两个的名字是一样的,这样在方法运行的时候一定会优先取得参数的那个obj变量。而方法外的那个obj参数实际相当于window.obj

2 变量的传递过程

在调用test方法,并传入方法外的obj变量,实际相当于传入window.obj这样一个引用类型①,也就是说代码obj = obj2;实际是对这个拷贝的地址的改变,因为这个地址只是个拷贝,所以这并不会改变其指向的真实对象。而代码片段1的obj.x = 111;这会通过obj这个地址查询到x这个属性,并对其赋值。

other

var num = 1;

function outFn() {
    this.num = 10;
    function inFn() {
        console.log(num);
        var num = 100;
        console.log(this.num);
        console.log(window.num);
    }
    return inFn;
}

var newfn = outFn();
new newfn();  // this指向了对象

注:
引用类型:引用类型的特点是在传递的过程中并不进行自身的值复制,而是传入地址的拷贝。

转自:http://www.cnblogs.com/rulee/archive/2012/09/03/2663800.html

足迹所到过城市之天津

先上美图:

天津塘沽外滩公园

天津塘沽外滩公园01
为什么天津辣(那)么多漂亮的地方,偏偏放一张外滩公园的图片,因为在天津塘沽待的时间相对比天津其他地方久,所以就放一张到目前印象相对比较深刻的地方;

<!–more–>

天津

记忆碎片:豆腐脑、豆浆、油条、煎饼果子、塘沽区、洋货市场、轻轨、天津方言、保税区、室内装修、学生、天津奥林匹克体育中心、第三大街、信义隆装饰有限公司、泰达

初次结缘天津大概是初三毕业之后的暑假(2006年7、8月份),有两个月的空闲期;所以就出去打工(玩咯),正好这是亲戚有在承包奥体中心的基础建设;嗯,也就是这个时候接触到天津,在奥体中心度过了一个多月,之后就回去念高中了。

再次亲近天津,应该就是2007年、2008年,那时候就是来这里打工咯;
父亲大人在他朋友的装修装饰公司①上班,我就来这里打工学习生存技能;
到这里接触到了室内装潢、设计师、水电工、木工、瓦工、油漆工(刮腻子和刷涂料)等等(他们都是很可爱的人);
也学到了很多技能:水电工、油漆工、木工等;
每天从住的地方(韶山北里②)出发,
带上必备的生存工具,
吃点早餐:煎饼果子、豆浆油条、豆腐脑;
屁颠屁颠的骑个自行车(有时候电动车)穿梭于塘沽区、滨海新区的大街小巷、各种小区去做干活;
累并快乐着。

当然也经历过奥运会了;

感觉会写好多… 就先写这些吧。


图片集咯

标志建筑物
↑ 外滩公园 标志建筑物

夜景
↑ 外滩公园 夜景

船和调皮的顽童
↑ 外滩公园 船和调皮的顽童

海门大桥
↑ 外滩公园 海门大桥

东方公主
↑ 外滩公园 东方公主

洋货市场
↑ 洋货市场


注:
① 装修装饰公司:北京信义隆装饰有限公司(天津分公司),位置天津滨海新区第三大街豪威大厦B座104;
② 韶山北里:天津市塘沽区杭州道与韶山路交口;

图片资源:

扯淡小分队【第N+回】

为什么是第N+回呢,因为之前有好几回了,记忆模糊(好记忆不如烂笔头,所以就想记下来

时间地点人物事件

时间:2016-05-23
地点:七年咖啡 老北京前后涮羊肉(和平里店)
人物:旭旭苗神教授
事件:周末约吗

我们的扯淡小分队又聚会了;聚会目的是什么呢,说白了就是扯扯大家近况。旭旭刚从日本团建回来,给我们带来一些【Made in Japan】的小点心,然后我们就愉快的决定周六聚聚😄(吃货联盟)。

先来张美图:

小点心

<!–more–>


简单的JavaScript异步之setTimeout(ES5)

猜想下会打印什么东西来;

代码:

for (var i = 0; i < 10; i++) {
    setTimeout(function() {
        console.log(i);
    }, 0);
}

预览:

setTimeout预览

简单的解释:

setTimeout解释

嗯,就这些。

拓展 通过作用域来输出0-9

1) 可用ES5函数作用域;

for (var i = 0; i < 10; i++) {
    (function (i) { // 作用域
        setTimeout(function() {
            console.log(i);
        }, 0);
    })(i);
}

2) ES6的块级作用域

var换成let

for (let i = 0; i < 10; i++) {
    setTimeout(function() {
        console.log(i);
    }, 0);
}

图片集咯

七年咖啡Desk

七年咖啡Desk

小点心 (巧克力&&杏仁饼干)

七年咖啡desk

老北京前后涮羊肉的火锅

老北京前后涮羊肉的火锅


未完待续……


watch&figlet

安装 watch

sudo brew install watch

iTerm or Terminal(终端)

示例代码

watch -t -n1 "date"

2016    3 29        20  33 54   CST

watch && figlet

watch -t -n1 "date +%T|figlet -f banner"

 #####    ###    #   #####  #        #  #        #####
#     #  #   #  ### #     # #    #  ### #    #  #     #
      # #     #  #        # #    #   #  #    #  #     #
 #####  #     #      #####  #    #      #    #   ######
#       #     #  #        # #######  #  #######       #
#        #   #  ### #     #      #  ###      #  #     #
#######   ###    #   #####       #   #       #   #####

<!– more –>

figlet

安装 figlet

$ sudo brew install figlet

iTerm or Terminal(终端)

示例代码

$ figlet "webclown"

              _          _
__      _____| |__   ___| | _____      ___ __
\ \ /\ / / _ \ '_ \ / __| |/ _ \ \ /\ / / '_ \
 \ V  V /  __/ |_) | (__| | (_) \ V  V /| | | |
  \_/\_/ \___|_.__/ \___|_|\___/ \_/\_/ |_| |_|

设置字体

$ figlet -f tinker-toy "W e b c l o w n"

o       o             o                 o
|       |             |                 |
o   o   o     o-o     O-o       o-o     |     o-o     o   o   o    o-o
 \ / \ /      |-'     |  |     |        |     | |      \ / \ /     |  |
  o   o       o-o     o-o       o-o     o     o-o       o   o      o  o

<!– more –>

Wiki

  • http://www.figlet.org/

通过wget下载网站

通过wget下载一个网站

工具

iTerm or Terminal(终端)

示例代码

wget -r -p -np -k --restrict-file-names=nocontrol [url]

如何在电脑上安装wget

<!– more –>

简单的 shell 脚本

wget.sh

put it in /Users/$user

chmod -x wget.sh // Writable

./wget [url] // Any directory

Wiki

  • https://en.wikipedia.org/wiki/Wget
  • https://wiki.ubuntuusers.de/wget/

Git-常用命令

develop via a single branch

t branch -m {{branch}}
git fetch origin
git rebase origin/master -i
git push origin {{branch}}

create a new branch

git checkout -b {{branch}}

checkout remote branch

git checkout -b {{branch}} origin/{{branch}}

<!– more –>

merge branch to master

git checkout master
git merge {{branch}}

delete branch

git branch -D {{localBranch}}
git push --delete origin {{remoteBranch}}

rename repo

git remote -v
// View existing remotes
// origin  https://github.com/user/repo.git (fetch)
// origin  https://github.com/user/repo.git (push)

git remote set-url origin https://github.com/user/repo2.git
// Change the 'origin' remote's URL

add tag

git tag {{tag}}
git push --tags

add tag for a history commit

// Set the HEAD to the old commit that we want to tag
git checkout {{leading 7 chars of commit}}

// temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a {{tag}} -m "{{commit message}}"

// set HEAD back to whatever you want it to be
git checkout master

git push --tags

delete tag

git tag --delete {{tag}}
git push --delete origin {{tag}}

gh-pages

http://{{group}}.github.io/{{repo}}/

npm add owner

npm owner add {{name}}

一些链接

转自:https://github.com/fool2fish/issues/9

PSD图层管理指南

PS图层命名和分组看似麻烦,会打断设计的兴致,但是当图层多得自己都找不到时就知道好处了。科学有调理的管理你的PSD既是一名优秀设计师的必备技能,也是设计师跟上下游同事打交道的礼仪准则。和你的基友协同工作的过程中,可以说对PSD图层的命名和管理是最大的冲突所在,一堆不知所云的“新建图层”和“图层1副本”只会让基友抓狂!

  • 图层管理的精髓在于:分组、链接和命名。
  • 合理使用图层分组(图层文件夹)。以UI组件、功能模块等为分组基准,图层分组可以更快地看清楚整个文件的架构,并且可以很快的找到想要的那一层。
  • 善用链接,把关联紧密的图层相互链接,这样能保持相对位置、大小不变。就像人的脖子和头是一个整体,相互连在一起的
  • 每个分组以及分组外的每个图层都必须命名,且是有意义的命名,像“图层1、副本、副本2、组3”这样的图层命名是严格禁止的,养成新建图层后第一件事就是命名的习惯。图层命名中英文均可。
  • icon与按钮。icon命名以icon-为前缀,按钮命名以btn-,例如:icon-close.png, btn-login.png , btn-login-hover.png
  • 删除不必要的图层。你是一个图层堆积狂吗?PSD在交付给前端之前,请删除不必要的图层。
  • 文本图层不要合并或格式化,方便修改及前端同事复制文本内容。
  • 纯色文本不要使用颜色叠加进行配色,请使用文字工具进行配色。
  • 字体的字号必须是整数,不要随意拉伸字体。除了会使字体变得难看模糊之外, HTML/CSS也无法实现这种效果。
  • 中大型、长期项目需要提供至少两份附件:1、所有icon与按钮(各种状态)的集合;2、设计稿配色标注,可使用“设计稿配色标注”工具。

转自:https://github.com/yyued/PSD-Etiquette

Some Sass writing standards

// 由于 Node 原生支持模块的作用域,并不需要额外的 wrapper
// "as though the module was wrapped in a function"

var a = require('./a')  // 加载模块(同步加载)
a.doSomething()         // 等上一句执行完才会执行

exports.b = function(){ // 暴露 b 函数接口
  // do something
}

Sass – CSS 预处理器

简介

CSS 预处理器:

定义一种新的语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,开发者可以使用这种语言进行编码工作

Sass背景

Sass是对CSS的语法的一种扩充,诞生于2007年,最早也是最成熟的一款CSS预处理器语言,它可以使用变量、常量、嵌套、混入、函数等功能,可以更有效有弹性的写出CSS

Sass已经有了两套语法规则:

  • 一个依旧是用缩进作为分隔符来区分代码块的;
  • 另一套规则和CSS一样采用了大括号作为分隔符。
    后一种语法规则又名Scss。(Scss更常用,以下说得Sass在没有特别指出得情况下,指的都是Scss)。

书写规范

  1. 声明文档的字符编码
  2. 导入引用 @mixinfunction 等等
  3. 文档的简要概述
  4. 嵌套层级不要太深,适当的时候使用 @at-root
  5. 不要忘记写;
@charset "UTF-8";
@import "mixin.scss"; //导入其他文件 
@import "mixin";      //导入其他文件 
/**
 * @fileoverview <%= projectName %>.
 * @author <%= author %> <<%= email %>>
 * @version <+DATE+>
 */

局部文件

名字以下划线开头比如 _reset.scss. 下划线让Sass知道这个文件是一个分部文件,不会为它单独产生一个CSS文件。可以使用@import导入分部文件.

———–_reset.scss———–

html,body,ul,ol {
   margin: 0;
  padding: 0;
}

———base.scss———–

/* base.scss */
@import 'reset'; // 可忽略下划线
body {
  font: 100% Helvetica, sans-serif;
  background-color: #efefef;
}

———编译后———–

/* base.scss */
html, body, ul, ol {
  margin: 0;
  padding: 0;
}

body {
  font: 100% Helvetica, sans-serif;
  background-color: #efefef;
}

常见错误

1. 编译后css文件中出现 @at-root
  • @at-root 是Sass3.3版本的新特性
  • 解决方法:升级你的sass版本
    • gem update sass
    • sass -v
    • Ps:升级过程中可能需要当前生产环境下的某个文件夹的读写权限;
    • ERROR: While executing gem … (Gem::FilePermissionError) You don’t have write permissions into the /usr/local/bin directory.
    • 执行命令:sudo chmod -R 777 <-filepath->
    • 关于”chmod“的更多信息,请百度或google学习
2. 忘记设置编码
Error: Invalid US-ASCII character "`\xE4`"
on line 4 of app/assets/scss/_web/topdeals-web.scss
Use --trace for backtrace.
Warning: Exited with error code 65 Use --force to continue.
Syntax error: Invalid GBK character "`\xE5`"

原因:文档没有设置 编码格式
解决方法:文档第一行@charset "UTF-8"; "UTF-8"大写

3. 句末忘记写 “;" 也会报错
@charset "UTF-8"
/**
 * @fileoverview Home Paga Stylesheet
 * @author shang.yantao shang.yantao@topka.cn
 * @copyRight topka.cn
 * @versioon v1.0
 */
body{
    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
}

第一行 @charset 句末忘记写 “;”。报错会出现在第8行(也就是错误本身的下一个css主体处,找错应该向上找;):
![](/images/posts2015/02-05/image2014-12-12 15-41-32.png)

gulp-ruby-sass 相关
gulp-ruby-sass: stderr: OptionParser::InvalidOption: invalid option: --sourcemap=none
Use --trace for backtrace.

升级sass> gem update sass

http://sass-lang.com/guide 官方文档

  • Preprocessing(预处理)
  • Variables(变量)
  • Nesting(嵌套)
  • Partials(局部文件)
  • Import(导入文件)
  • Mixins(混合变量)
  • Extend/Inheritance(扩展/继承)
  • Operators(运算符)