CSS轮廓outline
2016-03-15 00:50
423 查看
×
目录
[1]轮廓样式 [2]轮廓宽度 [3]轮廓颜色 [4]轮廓偏移 [5]复合属性 [6]常见应用
[注意]IE7-浏览器不支持
outline-style
值: none | dotted | dashed | solid | double | groove | ridge | inset | outset | inherit
初始值: none
应用于: 所有元素
继承性: 无
outline-width
值: thin | medium | thick | <length> | inherit
初始值: medium
应用于: 所有元素
继承性: 无
[注意]如果轮廓的样式是none,则轮廓宽度计算值为0
outline-color
值: <color> | invert | inherit
初始值: invert(IE)、前景色(其他浏览器)
应用于: 所有元素
继承性: 无
[注意]IE浏览器不支持
outline-offset
值: length | inherit
初始值: 0
应用于: 所有元素
继承性: 无
[注意]outline中并没有包括outline-offset,需要对outline-offset进行单独设置
outline
值: [<outline-color> || <outline-style> || <outline-width>] | inherit
初始值: 无
应用于: 所有元素
继承性: 无
firefox浏览器支持私有属性-moz-outline-radius来设置轮廓圆角。该属性对应的js写法是MozOutlineRadius
对于其他浏览器,我们可以使用其他属性实现类似效果。box-shadow与border-radius属性一脉相承,也就是说如果border-radius是圆角,则box-shadow的投影也是圆角
// var all = document.getElementById('cnblogs_post_body').children;
var select = [];
for(var i = 1; i < all.length; i++){
if(all[i].getAttribute('id')){
if(all[i].getAttribute('id').match(/anchor\d/)){
select.push(all[i]);
}
}
}
var wheel = function(e){
e = e || event;
var data;
if(e.wheelDelta){
data = e.wheelDelta;
}else{
data = -e.detail * 40;
}
for(var i = 0; i < select.length; i++){
if(select[i].getBoundingClientRect().top > 0){
return;
}
if(select[i].getBoundingClientRect().top <= 0 && select[i+1]){
if(select[i+1].getBoundingClientRect().top > 0){
change(oCon.children[i+2])
}
}else{
change(oCon.children[select.length+1])
}
}
}
document.body.onmousewheel = wheel;
document.body.addEventListener('DOMMouseScroll',wheel,false);
var oCon = document.getElementById("content");
var close = oCon.getElementsByTagName('span')[0];
close.onclick = function(){
if(this.innerHTML == '显示目录'){
this.innerHTML = '×';
this.style.background = '';
oCon.style.border = '2px solid #ccc';
oCon.style.width = '';
oCon.style.height = '';
oCon.style.overflow = '';
oCon.style.lineHeight = '30px';
}else{
this.innerHTML = '显示目录';
this.style.background = '#3399ff';
oCon.style.border = 'none';
oCon.style.width = '60px';
oCon.style.height = '30px';
oCon.style.overflow = 'hidden';
oCon.style.lineHeight = '';
}
}
for(var i = 2; i < oCon.children.length; i++){
oCon.children[i].onmouseover = function(){
this.style.color = '#3399ff';
}
oCon.children[i].onmouseout = function(){
this.style.color = 'inherit';
if(this.mark){
this.style.color = '#3399ff';
}
}
oCon.children[i].onclick = function(){
change(this);
}
}
function change(_this){
for(var i = 2; i < oCon.children.length; i++){
oCon.children[i].mark = false;
oCon.children[i].style.color = 'inherit';
oCon.children[i].style.textDecoration = 'none';
oCon.children[i].style.borderColor = 'transparent';
}
_this.mark = true;
_this.style.color = '#3399ff';
_this.style.textDecoration = 'underline';
_this.style.borderColor = '#2175bc';
}
// ]]>
目录
[1]轮廓样式 [2]轮廓宽度 [3]轮廓颜色 [4]轮廓偏移 [5]复合属性 [6]常见应用
前面的话
轮廓outline处在边框边界的外面,它不像边框那样参与到文档流中,因此轮廓出现或消失时不会影响文档流,即不会导致文档的重新显示。利用轮廓,浏览器可以合并部分轮廓,创建一个连续但非矩形的形状。默认地,轮廓是一个动态样式,只有元素获取到焦点或被激活时呈现[注意]IE7-浏览器不支持
轮廓样式
与边框类似,轮廓最基本的方面是样式,如果一个轮廓没有样式,边框将根本不会存在。与边框不同的是,值少了一个hiddenoutline-style
值: none | dotted | dashed | solid | double | groove | ridge | inset | outset | inherit
初始值: none
应用于: 所有元素
继承性: 无
轮廓宽度
与边框类似,轮廓宽度不能为负数,也不能指定为百分比值outline-width
值: thin | medium | thick | <length> | inherit
初始值: medium
应用于: 所有元素
继承性: 无
[注意]如果轮廓的样式是none,则轮廓宽度计算值为0
轮廓颜色
与边框不同,轮廓颜色有关键字invert反色轮廓,代表对轮廓所在的像素完全反色转换,使轮廓在不同的背景颜色中都可见。但实际上invert关键字只有IE浏览器支持,其他浏览器的轮廓颜色是元素本身的前景色outline-color
值: <color> | invert | inherit
初始值: invert(IE)、前景色(其他浏览器)
应用于: 所有元素
继承性: 无
轮廓偏移
轮廓偏移用来定义轮廓的偏移位置的数值。当参数值为正数时,表示轮廓向外偏移;当参数值为负值时,表示轮廓向内偏移[注意]IE浏览器不支持
outline-offset
值: length | inherit
初始值: 0
应用于: 所有元素
继承性: 无
轮廓
轮廓outline类似于边框样式的border属性,允许一次完成轮廓样式、宽度和颜色的设置。由于给定轮廓必须采用某种统一的样式、宽度和颜色,所以outline是关于轮廓的唯一简写属性。对于轮廓没有诸如outline-top或outline-right之类的属性[注意]outline中并没有包括outline-offset,需要对outline-offset进行单独设置
outline
值: [<outline-color> || <outline-style> || <outline-width>] | inherit
初始值: 无
应用于: 所有元素
继承性: 无
应用
由于轮廓outline不影响元素的盒模型大小,不影响页面布局,所以可以用outline模仿border边框效果。但如果是圆角边框就不是那么好办了。firefox浏览器支持私有属性-moz-outline-radius来设置轮廓圆角。该属性对应的js写法是MozOutlineRadius
对于其他浏览器,我们可以使用其他属性实现类似效果。box-shadow与border-radius属性一脉相承,也就是说如果border-radius是圆角,则box-shadow的投影也是圆角
<div class="show">测试内容</div>
.show{ margin: 50px; width: 100px; height: 100px; background-color: pink; border-radius : 1px; box-shadow: 0 0 0 30px lightblue; }
// var all = document.getElementById('cnblogs_post_body').children;
var select = [];
for(var i = 1; i < all.length; i++){
if(all[i].getAttribute('id')){
if(all[i].getAttribute('id').match(/anchor\d/)){
select.push(all[i]);
}
}
}
var wheel = function(e){
e = e || event;
var data;
if(e.wheelDelta){
data = e.wheelDelta;
}else{
data = -e.detail * 40;
}
for(var i = 0; i < select.length; i++){
if(select[i].getBoundingClientRect().top > 0){
return;
}
if(select[i].getBoundingClientRect().top <= 0 && select[i+1]){
if(select[i+1].getBoundingClientRect().top > 0){
change(oCon.children[i+2])
}
}else{
change(oCon.children[select.length+1])
}
}
}
document.body.onmousewheel = wheel;
document.body.addEventListener('DOMMouseScroll',wheel,false);
var oCon = document.getElementById("content");
var close = oCon.getElementsByTagName('span')[0];
close.onclick = function(){
if(this.innerHTML == '显示目录'){
this.innerHTML = '×';
this.style.background = '';
oCon.style.border = '2px solid #ccc';
oCon.style.width = '';
oCon.style.height = '';
oCon.style.overflow = '';
oCon.style.lineHeight = '30px';
}else{
this.innerHTML = '显示目录';
this.style.background = '#3399ff';
oCon.style.border = 'none';
oCon.style.width = '60px';
oCon.style.height = '30px';
oCon.style.overflow = 'hidden';
oCon.style.lineHeight = '';
}
}
for(var i = 2; i < oCon.children.length; i++){
oCon.children[i].onmouseover = function(){
this.style.color = '#3399ff';
}
oCon.children[i].onmouseout = function(){
this.style.color = 'inherit';
if(this.mark){
this.style.color = '#3399ff';
}
}
oCon.children[i].onclick = function(){
change(this);
}
}
function change(_this){
for(var i = 2; i < oCon.children.length; i++){
oCon.children[i].mark = false;
oCon.children[i].style.color = 'inherit';
oCon.children[i].style.textDecoration = 'none';
oCon.children[i].style.borderColor = 'transparent';
}
_this.mark = true;
_this.style.color = '#3399ff';
_this.style.textDecoration = 'underline';
_this.style.borderColor = '#2175bc';
}
// ]]>
相关文章推荐
- gulp-css-spriter 雪碧图合成
- css调式技巧:a.class与a .class的区别, 空格的魅力
- CSS3实现图片轮播Slider
- CSS实现垂直居中的常用方法
- css杂类收集3
- css
- HTML+CSS实战(二)——固定层效果
- 主流浏览器css兼容问题的总结
- HTML+CSS实战(一)——导航条菜单的制作
- DIV+CSS 网页布局之:混合布局
- 浅谈百度地图的简单开发之引入基本地图以及修改地图样式(一)
- CSS学习(十四)-CSS颜色之一
- DIV+CSS 网页布局之:三列布局
- DIV+CSS 网页布局之:两列布局
- DIV+CSS 网页布局之:一列布局
- css布局:如何使底部始终在文档末尾
- 慕课网【HTML+CSS】3.13学习内容
- 网页层叠样式表(html+css)
- 子div在父div居底
- css3 -> 多栏布局