标签 代码 下的文章

<pre> 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。

<pre> 标签的一个常见应用就是用来显示源码。

而经常遇到的问题是:如果一句代码很长的情况,结果会造成页面撑开或者代码超出边界,非常难受。

overflow:hidden 那么会将原来的代码隐藏掉导致显示不全

而如果用 overflow:auto 则经常出现两个滚动条(右部和底部),阅读不方便还不美观。

如图:

今天折腾了一个好久,才搞出解决 <pre> 的代码块自动换行的办法:

先尝试我们经常会使用的强制换行:word-wrap: break-word;

好像很完美,谨慎的我换着浏览器看了下,结果发现:IE,OP,Chrome,Safari都可以,Firefox就悲剧了。

纳尼,这是什么情况,同样是现代浏览器,FF竟然这么不争气。

仔细查了一下关于换行的css,原来还有 white-space ,丢到浏览器里试一试,填几个 参数 看看效果

加上了 white-space:pre-wrap; 发现Firefox可以神奇的换行了,大功告成!、

最后代码如下:

pre {
    white-space: pre-wrap;
    word-wrap: break-word;
}

效果如下:

这样就没有了底部的那个左右滚动条了,看代码的时候就可以心无旁骛的乡下滚动啦

enter image description here

嗯,大概的效果就是,当访客访问你的博客时,页面会首先显示一张全屏大图,然后再逐渐显示网页内容,很有趣,之前一个朋友让我给他做单页的时候,他想加入这个效果,我就研究了下,给他加了上去,后来在@碎碎念哪里看到的是JS版本,才想到我纯CSS做出来好像很厉害的样子,放出来仅供参考。

先贴出CSS代码,讲下方代码添加到header内(不要放入css文件内)

<style>
.loading{opacity:0;background:#fff url(images/loading.jpg);
background-position:center center;
-webkit-background-size:cover;
-moz-background-size:cover;
-o-background-size:cover;
background-size:cover;position:fixed;width:100%;top:0;bottom:0;animation:Loading 2s;line-height:100vh;text-align:center;font-size:30px;color:#ccc;}
@keyframes Loading
{
0% {opacity:1;color:#C1FF50;z-index:999999;}
20% {opacity:1;color:#5CB8FF;}
40% {opacity:1;color:#FFD350;}
60% {opacity:1;color:#FF5950;}
80% {opacity:.5;color:#fff;}
100% {opacity:0;}
}
</style>

可以很直观的看出,代码是通过CSS3动画控制的效果,所以很轻量,但是兼容浏览器没有JS的全面。

html代码就更简单了,将下面代码放入body的最上面

<div class="loading">Loading...</div>

代码参考:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TEST</title>
<style>
.loading{opacity:0;background:#fff url(images/loading.jpg);
background-position:center center;
-webkit-background-size:cover;
-moz-background-size:cover;
-o-background-size:cover;
background-size:cover;position:fixed;width:100%;top:0;bottom:0;animation:Loading 2s;line-height:100vh;text-align:center;font-size:30px;color:#ccc;}
@keyframes Loading
{
0% {opacity:1;color:#C1FF50;z-index:999999;}
20% {opacity:1;color:#5CB8FF;}
40% {opacity:1;color:#FFD350;}
60% {opacity:1;color:#FF5950;}
80% {opacity:.5;color:#fff;}
100% {opacity:0;}
}
</style>
</head>
<body>
<div class="loading">Loading...</div>
</body>
</html>