关于pop-up被blocked的问题
- 首先 这个pop-up的功能叫 popup blocker , 它是浏览器(包括ff, chrome等) 自身 所内置 的一个功能, 不是 安装的外部 插件/或扩展.
- 所以 你即使禁用 ff的所有的 外置插件和扩展 都不会有用的
- 这个popup-blocker 的设置,是在 preferences中, 通常在 privacy 或者 security 或 contents中, 比如 ff就是在 content中, 有一个专门的设置 "Pop-ups Block" 在这里你可以设置block所有的弹出窗口, 或设置 Allowed, 或设置 Exception...
deceptive: 欺骗的, 虚假的 deception: 骗局, 欺诈
deceptive remark: 骗人的话, 鬼话;
remark: 关注, 注意; 话语,说的话, (这个单词 跟 words 表示我们说的话, 而 talk speak都表示说话的动作. 所说的话, 用words 或remark来表示.)
off-the-cuff: (即兴的, 没有准备的, off-the-cuff remark 随口而说的话: i did not mean offence, it was a flippant, off-the-cuff remark. )cuff: 袖口, 手铐: off-the-cuff: 最早的即兴演讲者就是把内容写在袖口上的, 所以后来的即兴演讲者就这样做样子, 以降低观众的心理期望.
- 还有就是 当有pop-ups 被block的时候, 在地址栏的最前面的 i infomation通知/信息 图标上会有提示, 而且在 地址栏的最后面有 block 图标提示. 那么你就可以处理了.
比如在 i的图标是: you have not granted the site any special permissions. grant 跟 give差不多, grant sb. sth.
- bs中的选择按钮, 一个按钮要放在一个label中, 不能将多个按钮放在同一个 label中.
选择按钮, 除了用在真的选择对象的情况下, 还可以用在其他非选择情况下, 实际上是一个附带的 操作, 比如: 登录时选择: "记住我" 这个checkbox按钮.
bs的静态控件 .form-control-static 是类似于其他表单控件input等的, 其实它不是 普通文本, 虽然他也是要放在 p段落标签中的.<p class="form-control-static"> 静态控件 </p>
sans: 无, 没有;
serif: 衬线体 , 所以 sans serif: 非衬线体
对于汉字来说, 黑体, 微软雅黑是 sans-serif, 而宋体则是 serif
通常 对于标题/表格内的内容, 为了醒目, 使用 sans-serif的黑体. 而文章的正文部分使用 "易于阅读"的 serif宋体.
在css的font-family 的最后, 最好是加上一个 sans-serif. (sans-serif其实是一种 "字体族", 并不是具体的哪一种字体, 因为电脑中通常总是存在着一个 非衬[chen]线体 的字体, 所以sans-serif总是能保证字体的调用成功)
css属性的前缀 -moz, -ms -webkit -o等是 浏览器的"私有属性", 即"非标准css属性", 是为了兼容各个浏览器而设置的. 通常如果不是关键性的css属性:不影响内容的呈现, 可以不必考虑兼容性.
dfn: 表示 define定义一个项目. 是h5中的标签.
css3中, 允许使用 带有属性(中括号表示)的标签, 比如 abbr[title]{ border-bottom: 1px solid #aa0000; } 还支持否定的属性: audio:not([controls]) {...} 甚至就完全是一个 属性: [hidden], template{display: none;}
h5中的 abbr 作用跟h4中的 acronym(首字母缩写) 标签作用相同. 但是 acronynm 在h5中被废弃
css中的bottom和top等属性, 只是针对 "定位元素" 即声明了position:absolute 和 fixed ,和 relative的 有效. 对非定位元素(没有生命position属性的 )不起作用.
bottom: 表示 该元素的底部边缘 和 包含他的容器的底部边缘之间的距离.
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -.5em;
}
sub {
bottom: -.25em;
}
img {
border: 0;
}
而由于网页中使用的字体类型,也是各浏览器对字体类型有不同的支持规格。 字体格式类型主要有几个大分类:TrueType、Embedded Open Type 、OpenType、WOFF 、SVG。
TrueType
Windows和Mac系统最常用的字体格式,其最大的特点就是它是由一种数学模式来进行定义的基于轮廓技术的字体,这使得它们比基于矢量的字体更容易处理,保证了屏幕与打印输出的一致性。同时,这类字体和矢量字体一样可以随意缩放、旋转而不必担心会出现锯齿。
EOT – Embedded Open Type (.eot)
EOT是嵌入式字体,是微软开发的技术。允许OpenType字体用@font-face嵌入到网页并下载至浏览器渲染,存储在临时安装文件夹下。
OpenType (.otf)
OpenType是微软和Adobe共同开发的字体,微软的IE浏览器全部采用这种字体。致力于替代TrueType字体。
WOFF – Web Open Font Format (.woff)
WOFF(Web开发字体格式)是一种专门为了Web而设计的字体格式标准,实际上是对于TrueType/OpenType等字体格式的封装,每个字体文件中含有字体以及针对字体的元数据(Metadata),字体文件被压缩,以便于网络传输。
SVG (Scalable Vector Graphics) Fonts (.svg)
SVG是由W3C制定的开放标准的图形格式。SVG字体就是使用SVG技术来呈现字体,还有一种gzip压缩格式的SVG字体。
谷歌的fonts_noto.css、fonts_Roboto.css加载太慢,虽然直接下载下来了使用,但丢弃了的原因是测试时没看出太多差别,哈
推荐一个tff转换woff等的工具: www.fontsquirrel.com/tools/webfont-generator
- bs的浮动
直接提供了三个浮动的类: .pull-left, .pull-right .clearfix
清除浮动: 浮动有好处, 可以在块div内, 快速的方便的 对块级元素进行 布局; 但是也会带来 父元素div的"高度塌陷" 等一系列的副作用, 所以在float flow布局完成后, 要对div中的浮动清除.
- 清除的目的是, 让原来的div 当做一个正常的 div显示他的宽度和 所包含的内容. 不会对前后的元素造成影响, 而且不会像 指定父元素的高度 而不能实现高度"自适应". 他可以实现自适应
- 清除浮动的方法有几种: 一是在浮动元素的最后 添加
<div style="clear: both;"></div>;
二是 使用<br clear="all">
三是 在父元素中, 使用overflow: auto. - bs的类 class="clearfix" 就是使用的第三种方式 overflow
div.clearfix>div.pull-left+div.pull-right
- :before 和 :after的伪类? 样式中的 width和height和 line-height 设置为0 是怎么回事?
表示背景颜色的类, 标准的css是用 background: #ffff00; 什么的, 但是有几个 "辅助类" 直接表示背景颜色, 而且含有"语义"的意思, 包括: bg-warning, bg-success, bg-danger等.
当然这些 "独立的"类, 可以用在任何地方, 如文本的, 表格的, 段落的, 链接的文本...
h5, 要求文本和任何内容等都应该放在标签中, 不允许散落的内容, 不允许没有 语义 标签的内容.
但是 " 并没有固定的" 元素标签 的排放位置和 排放次序, 并不一定必须是 div>p>(a, txt, span,img) 其实所有的内容 基本上 都可以 相互嵌套的
. 比如在 table>td单元格中, 还可以使用 div, ul等内容
bs中的 .btn类, 通常可以放在 三种标签上, button, a, input上. 其他标签使用.btn类是不是不大合适?
h5中选择按钮input的checked和selected好像可以直接写, 不用写完整的checked="checked" 属性格式, 好像是推荐更简洁的写法.
em表示倍数, 他是相对单位,不是绝对单位, 即: 同样的1em, 可能是16px, 也可能是 12px.
- 他的大小 是相对于父容器 的字体大小font-size来确定的. 通常现代浏览器的字体大小默认的 都是 16px , 所以默认的1em就是16px
但是如果<div style="font-size: 12px"> <p style="font-size: 1em" > ...</p></div>
那么p中的文字大小就是 12px - em可以精确到小数点后面的3位.
- bs中全局 将font-size设置为14px, 这个设置被继承到body, 所以body的字体大小就是14px
- 全站中都使用em 是为了可以让全站 实现 等比例缩放
- 在sup和sub类, 使用了 position: relative 类样式, 然后规定这些 (定位元素) 的 top: -.5em, bottom: -.25em (top bottom left right 只是在定位元素中才能使用 表示元素的边缘 离 父元素的 对应边缘的 距离)
bs的宽度范围从小到大有3个临界点, 共有四种大小的设备屏幕: 768px, 990px, 1200px 小于768px的是手机设备xs, 大于1200px的是台式屏幕是大屏幕. 中间的是 sm和md屏幕, 这样区分是为了通过 meidia query媒体查询, 实现 移动设备优先 的自适应布局.
caret是脱字符, 也就是 插入的那个符号, 他的方向主要有 up right, down三种. 他是通过定义 span class="caret"
来实现的, span本身并没有内容, 就是靠 .caret类来实现的. .caret类, 通过定义不同方向上的border : border-top: 1px solid #000; border-left: 1px solid transparent 透明实现隐藏
等的思路来实现的.
同样的方法, 还有图标类: .glyphicon .glyphicon-user等.
BS现在使用稳定版3.3.7 , 估计是2017年左右发布的, 基本上可以用到最近的5年没有问题了.
jquery1.x兼容ie678, 使用得最多, 2013年发布的jquery2.x, 特点是 不再支持ie6, 7,8. 2.x 文件体积更小, 性能更快. 像bs 3.3.7 中使用的就是 jquery2.1.1. 3.x现在基本上使用得较少.
- 导航栏 中的几个类?
- nav 标签, 是h5 中的新增标签, 他实际上就是一个 块显示的div, 他的样式是: nav{display: block},
- 可以做 网站 页面和页面之间跳转的 主导航, 也可以 做 页面内部 的局部导航. nav中可以 包含任何内容, 比如: 链接a标签, 列表
标签ul>li等.
- header和footer标签.
是h5中的新增标签,主要是语义上的.
bs的css.map是什么意思? 是css文件和less文件之间的source map对应文件, 是记录 less文件中的变量到 css文件中的变量名称不同的 记录. 因为css是由less编译生成的.
bs的其他一些css文件, bootstrap-theme.css是关注/关心主题 方面的样式, bootstrap.css中的 通用样式就没有写了, 或者说是对bs.css普通/通用样式的覆盖/重写
类似的, 还有 bootstrap-responsive.css表示的是xs, sm等小屏幕设备的样式, 以前是独立的文件, 现在已经合并到bs通用文件中去了.
!important是什么意思?
- 主要是供 解决ie6中 css 属性不兼容的问题
- !import本身是css的标准属性, 表示css样式的优先级, 只是ie6 不支持他, 所以可以用这个 !important 来给非ie6写规范的css样式,
而给 ie6 写没有 !important的css样式.
:before和after的伪元素?
- :before是 伪类, 而 两个冒号表示的是 伪元素 ::before 但是为了兼容, 好像都可以用 单个冒号来表示.
- 伪类和伪元素的区别是, 伪类可以用新增一个 类来达到同等效果, 而伪元素可以通过 新增一个元素 达到同样的效果.
- :befor和 :after是 用得很多的两个伪类, 可以实现很多特殊的效果, 如果 纯粹的伪类 作用并不大, 因为针对每个元素都执行操作的情形不是很多, 尽管你可以设置
:before{...}
通常是针对某个具体的id或class来做:#foo:befor{content: ' '; background: url('../img/...') no-repeat; z-index: 2; width: 32px; height: 16px; position: absolute; top: -15px; }
- 利用伪元素还可以实现很多效果, 比如:
.foo::first-line{...} .foo::first-letter{ ....}
现在的win7 自带的ie , 至少都是ie9 了(很多由于ie自动升级, 都是ie10, ie11了). 所以ie的6,7,8 的不兼容, 不支持都不是大问题了.
导航栏navbar 是一个通栏, 是一个把所有内容都放在 一个通条中的东西, 里面可以放置任何东西, 包括表单元素等。 但是要注意, 导航栏中的 表单元素不同于 普通的表单元素, 要使用 .navbar-form, .navbar-btn等
辅助类 .sr-only, 表示 screen reader only只是供屏幕阅读器使用的类, 通常用于 隐藏 内联表单中的标签label。 仅供屏幕阅读器使用, 而不影响正常的ui显示。
role 和 aria(accessible Rich internet application) 也只是为了增强 网页元素的可访问性而设置的.实际上, 如果你的网站不考虑更多的话, 这些属性 都是可以省略的.
关于bs的一些摘要
并不强制的要求p和form一定要放在div中, 但是通常 建议 这么做
form-group是为了用来包裹input输入控件的, 即使没有 前面的 label标签, 也需要用form-group来包含. 但是如果不是form表单中的内容, 或者即使包含在form表单中, 但是 不是form的input类型, 比如单纯的button,
就不需要用 form-group来包裹.
bootstrap的一个规律性的思路/东西: 凡是dropdown, navbar等组件中的 锚点a,
按钮button, (大多时候)是作为 相应组件的 触发器来使用的. 因此会有 相应的 触发类: ???-toggle, 比如下拉菜单的 .dripdown-toggle类, 相应式导航栏的 .navbar-toggle. 通常还有相应的data- 属性, 比如 data-toggle="collapse" data-target="#foo"
如何设置一行中 的最大字数? set textwidth=80
其中textwidth 可以简写成 tw , 比如: set tw=80
生成下三角形的类, 是caret. 使用span标签和 b标签都是可以的, 一样的.
触发下拉菜单的, 虽然可以是 锚点a, 也可以是button按钮, 但是 锚点或按钮都 应该是一致的, 比如如果是a, 那么都应该是a, 如果你用button, 那么按钮的大小和锚点的大小就会不一样, 有稍微的 高低差别.
通常什么组件就有什么对应的 前缀的类, 比如 nav标签, 就有 .nav-tabs, .nav-pills, 而导航栏navbar的类 就有 div (.navbar .navbar-default) > (div .navbar-header, a .navbar-brand) + (ul .nav .navbar-nav > li .active > a ...) 响应式导航栏的切换类 .navbar-toggle 其中包含的 可折叠的下拉菜单放在 .collapse .navbar-collapse
分离的按钮下拉菜单,实际上是两个按钮, 所以要使用btn-group按钮组来实现: 前面的是一个普通按钮,后面的那个下三角形其实也是一个按钮,用它来触发下拉菜单
div class="btn-group">
<button type="button" class="btn btn-default"> 默认</button>
<button type="buton" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li class="active"><a href="...">link_to_somewhere</a></li>
....
</ul>
</div>
按钮组和分离按钮的区别: 实质上分离按钮仍然是一个按钮组, 只是分离按钮后面的那个caret更小而已.
- 下拉菜单包括一个 触发button + 一个.dropdown-menu的ul , 这两部分
一定要放在一起, 放在一个大的外围div中, 否则下拉菜单将不会被触发. - 这个包裹下拉菜单和触发按钮的div可以是 div.dropdown, 也可以是其他的 div .btn-group, div.btn-group-md .btn-toolbar
关于tabindex?
- focusable: 在解决"为什么元素不能响应keydown keyup等事件?" 的时候, 知道: 只有对于那些 可以 focusable的html元素 才能响应键盘事件. 然而并不是所有的html元素 都可以 focusable.
- 哪些html元素可以focusable呢? 通常是: a链接, button按钮, input输入框, textarea文本框, select选择框, 其他一些视频音频区域.
- 除此之外, 其他标签通常是不能focusable的, 比如标签, 文字, 图片等元素. 要让标签等元素可以被 focusable, 一个方法就是设置 该元素的tabindex属性. 不管这个tabindex的值是多少, 只要设置了属性就可以了.
另一个方法是 设置元素的属性: contenteditable="true"
因此, tabindex的一大作用, 就是让元素可以获得焦点, 从而触发 focus状态
1.tabindex的值分几种情况
通常是1 到 32767, 数字越小, 越先被tab到;
如果tabindex=0 则仍然可以被tab到, 但是要等到其他所有大于0的元素tab完成后, 才被tab到, 都是tabindex=0的元素, 按文件流的先后顺序tab
如果tabindex=-1, 则排除在键盘tab的范围外. 但是仍然可以用鼠标点击获得焦点
被focusable的元素, 激活(获得焦点的方法)有:
鼠标单击,
键盘tab,
直接调用元素的focus()方法.如果在某个元素上 onkeyup事件无法触发, 是由于li元素默认无法获得焦点, 也就无法对键盘输入做出响应. 因此只要在li上设置 tabindex的属性就好了, 值可以是任意的, 比如 tabindex=-1
在linux的 命令 : less/more中 是不能修改的, 只能查看
要找出etc/php.ini中, 不是分号开头的行(即不是解释内容的, 实际可以配置的行): 使用搜索 /^[^;]
即可
关于文件上传的类 Upload中的upload方法的设置: 最好是按下面的设置进行:
public function upHandler(){
$up = new \Think\Upload();
$up -> rootPath = "./Public/"; // 这个一定要设置, 避免被默认的保存在网站的根路径Uploads下.
$up -> subName = 'Uploads'; // 这里不要在最后再加上斜杠了, 否则最后的savepath就是"Uploads//", 被加上两个斜杠
$up -> saveName = ''; // 为了避免重复上传相同的文件, 这里要设置saveName="" , 以便上传文件保持原名
...
为了让某个子路径可以被 other所写, "必须" 要设置它的父目录 为 other所可写. 但是不必/不一定 要设置父路径下的所有 子目录 都要可被写!
[root@localhost Public]# ll
total 16
drwxr-xr-x 2 root root 4096 Jun 3 08:41 Admin
drwxr-xr-x 2 root root 4096 Jun 3 08:41 Comm
drwxr-xr-x 2 root root 4096 Jun 3 08:40 Home
drwxr-xrwx 2 root root 4096 Jun 10 12:23 Uploads
[root@localhost Public]# ll -r ..
total 16
drwxr-xrwx 6 root root 4096 Jun 10 12:23 Public
模板变量替换: 在Library\Behavior中,
namespace Behavior;
class ContentReplaceBehavior {
...
public function templateContentReplace($content){
$content=array(系统自定义的...);
if(is_array(C('TMPL_PARSE_STRING')){ // 因此自定义的模板解析就是它
$content = array_emerge($content, C('TMPL_PARSE_STRING'))
}
.....
}
}
<body>
<div class="container">
<h2>bootstrap组件演示 <small>导航元素nav类的使用</small></h2>
<ul class="nav nav-pills">
<li ><a href="#">link01</a></li>
<li class="dropdown active">
<a class="dropdown-toggle" data-toggle="dropdown" >link02 <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">dropdown01</a></li>
<li><a href="#">dropdown02</a></li>
<li><a href="#">dropdown03</a></li>
</ul>
</li>
<li><a href="#">link03</a></li>
</ul>
</div>
<script src="/Public/jquery-1.11.min.js"></script>
<script src="/Public/bs/js/bootstrap.min.js"></script>
</body>
下拉菜单组件, 可以放在任何外部容器中, 比如可以是 div.dropdown, div.btn-group, div.input-group-btn中,外部包裹元素还可以是 导航元素中的 li.dropdown 触发器元素, 通常是按钮button, 也可以是锚点a元素.
bs的组件, 外观上可以用 css样式来实现, 但是 组件的 动作,比如 显示/关闭, 下拉和上升等动作, 就需要用 js来实现, 所以, bs的下拉菜单, 要有bootstrap.js的支持才能使用.
导航元素(不是导航栏) 实现方式是: 只需在ul中指定 .nav类和相关样式 .nav-tab, .nav-pills .nav-stacked 或.nav-justified 在li上 禁用.disabled, 只是外观上显示被禁用. 但真正的禁用要靠js来实现.
bs的 "布局组件"很多, 比如 图标 glyphicon... 下拉菜单, 按钮组(所谓的按钮组,就是将多个按钮排在一起, 中间没有分隔线的那种), 按钮下拉菜单(在按钮组中的下拉菜单), 输入框组(就是将普通文字, 按钮, 复选单选按钮, 下拉菜单等内容 和 表单form的 input控件 即: input.form-control 组合在一起使用, 通过使用输入框组, 可以向基于文本的输入框添加作为前缀和后缀的文本或按钮, 添加公共的元素和内容. )
- 经常讨论的 表单form和 table哪个在外面, 哪个在里面?
- 结论是 通常把table 栅格元素div.row div.col-md-..等放在 form表单中, 这样可以 一次性地 提交 所有数据.
为甚么有 宽度和高度都为0 的元素?
- 并不能 实现 让该元素 "隐藏"
- 只是 在某些特殊场合下有使用. 表示让该元素处于最小的范围!
记起, .row 是使用在 栅格系统中的类, 总是跟 col-...配合使用.
实际上, 可以看到在很多案例中, bs中的 按钮组, 输入框组 的应用非常多, 特别是 分离按钮 (一个普通按钮和 一个向下三角形的组合) 和下拉菜单应用得很多.
分离的按钮 +触发的下拉菜单
分离的按钮, 实际上是两个按钮, 所以使用按钮组, 前面一个按钮是一个普通的按钮, 单击去执行某个动作, 后面的下三角按钮 触发下拉菜单.
原生的按钮, 跟使用了.btn 类的按钮相比, 确实很丑, 没有bs按钮的 高度/细边框/hover响应
注意.btn 类并不能取代 .btn-default类, .btn类只是实现了按钮的高度, 但是并没有 细边框. 只有定义了 .btn-default样式后, 才有: 细边框, 同时默认的背景也由灰色变为白色了.
被触发的下拉菜单ul,必须放在 和 触发button在同一个 div的范围内. 或者说, 必须紧挨着 触发button/a. 否则下拉菜单会失败.
<div class="dropdown">
<button type="button" class="btn btn-default"> 默认</button>
<button type="buton" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span>
</button>
<ul class="dropdown-menu"> // 要注意: 这里的ul要跟前面的 button 放在同一个 dropdown的div中, 才能有效, 否则无效!
<li class="active"><a href="...">link_to_somewhere</a></li>
....
</ul>
</div>
bootstrap中的有些组件, 如下拉菜单, 导航栏下拉菜单等 的宽度如何修改? 因为有时候会发现, 下拉菜单中的内容很少, 但是菜单项的宽度却仍然很宽? 这是由什么决定的, 导致的呢? 原来这是由 元素 相应类样式的 min-width属性来决定的, min-width: 的作用就是 设置元素的最小宽度, 即使该元素的内容很少的时候, 也显示那么宽.
感觉很多时候的js代码, 如果比较简单, 可以通过原生的js代码来实现的,就应该 优先考虑原生js,如果不好写,不好实现,才考虑使用jquery.
role的作用是用来描述一个tag标签的非标准用法的实际作用,比如将一个div用作button, 那么role就是告诉屏幕阅读器等辅助工具这是一个button.
dropdown下拉菜单中, 包含多个li, 而且 下拉菜单中的分割线 也是<li class="divider"></li>
, 下拉菜单中的标题header文字,也是li: <li class="dropdown-header"> header 文字 </li>
bootstrap中的 aria-label是用来对元素做辅助信息说明的; 如果同时定义了 aria-labelledby属性, 则该属性比aria-label属性更优先.
有的网站内容 居然不支持 http/https协议, 用它们打开网站会提示 403错误, 但是可以用wget协议来下载并获得. 比如下载 rarlinux: wget http://rarsoft.com/rar/rarlinux-4.0.1.tar.gz
安装unrar 参考: https://www.cnblogs.com/xing901022/p/4655891.html
在linux终端中, 可以用cp复制 source to destination, or Multiple Sources to Directory. 即可以一次性的复制多个文件到 目的文件夹.
rarlinux-4.0.1.tar.gz 解压后, 其实就已经得到 rar/unrar 命令文件了, 只是用make的话, 可以在/usr/local下先创建 /usr/local/bin
和lib, 然后将命令文件rar + unrar 拷贝到/usr/local/bin中, 其他相关库拷贝到 /usr/local/lib中了.
使用 unrar时, 必须指明 具体的命令(即unrar类似dnf那样的命令组), 其中l是列表显示, 而 e和x都是extract, 只是e 解压到当前目录, 而x可以指定具体的路径.
有时帮助文档chm中 会出现 "乱码", 那么是因为选择的编码不对, 尝试着选择 gbk, gb2312,或utf8可以消除乱码.
bs中, pager, pagination等类样式, 只是显示的样式和外观, 但是这些链接中的 实际的/ 具体的动作, 还的要自己去另外实现.
.pager类中包含的li链接, 默认的是放在 容器中间的, 居中的; 要让翻页按钮(链接a)排列在容器的左右两边, 浮动, 使用 .previous类样式 和 .next类样式.
类似的 浮动类, 还有 文本的 .pull-left .pull-right, 导航栏的 .navbar-left, .navbar-right等.
所谓的浮动, 就是 元素 不是挨着挨着排列的, 而是尽量 向 容器的 两边/两端 移动, 比如向左移动/尽量靠左 边界就是 left-float. 尽量向右靠拢, 尽量靠在右端, 就是 right-float右浮动.
查看html中的特殊符号,随便查表都可以得到: 参考 https://blog.csdn.net/w_fenghui/article/details/1493425
, 其中 « 表示的 左 双箭头 <<, 而 ← 表示的 左箭头 <- 两个是不同的. 向右同理.
css中的伪类和伪元素很有用, 比如可以在元素的前面(或后面 )添加一些 前缀符号, 而不使用 明显的/显式的 标签元素, 比如 bs中的 .breadcrumb 面包屑类, 就是利用 的 伪类 来实现的.breadcrumb > li + li:before { padding: 2px; content : "/"; color: #333; ..}
### 基本上 css中的 选择器, 包括 元素标签, 类, id 选择器/选择符, 和 子类, 属性选择器等 , 跟 jquery中的 选择器 是 相对应的, 都有类似的 功能和应用方法.
- ">" 表示的是所有的 子元素, 还是 只包含 父元素的 跟它紧挨着的 子元素?
结论是: "> " 表示 父元素所有的 子元素, 并不只是 紧挨着的那个 .
使用jquery的时候, 要注意, 其选择器和 同名 的方法 之间的差异, 并不是完全相同的: 比如: 选择器: prev ~ siblings 的同辈元素选择器 和 siblings() 的区别: 前者 只是包含 当前元素的 "后面" 的所有 同辈, 而siblings() 方法 则包含 其 前后 都有的 所有同辈!
#### jquery的选择器, 在一个引号内, 可以 混合使用 多个
路由规则分为 规则路由和 静态路由, 两种的配置类似, 都要 设置
URL_ROUTER_ON =>TRUE,
只是: 规则路由是 URL_ROUTE_RULES, 而静态路由 的中间则不是Route 而是 Map, 即URL_MAP_RULES
**在整个tp中, 不管是路由, 还是模板等, 凡是 各种操作, 都是 优先使用 " 控制器Controller / action " 的操作方式! **