CSS/Javascript中的规则页面效果
Ruled-page effect in CSS/Javascript
例如,我希望在CSS或Javascript/JQuery中创建规则页面效果。我知道CSS可以通过设置固定的线条高度并创建适合的背景图像来实现这一点。
然而,我更喜欢创建一个像这样的矢量解决方案(即没有图像),但我需要它在ie中工作。
在不使用在所有现代浏览器中都能工作的图像的情况下,有可能产生这种效果吗?
理想的解决方案是检测段落中一行的顶部和底部,并用javascript在两者之间画一条线,这样它就可以处理未定义的行高(但如果必要,我很乐意定义它们)。
我忘了提课文是动态的。
尝试朝这个方向前进:http://jsfiddle.net/Jw8pw/这是非常基本的,但如果你考虑到线条边界的高度和文本的位置,你可以获得更多的深度。基本上所有的东西都需要基于em高度。使用透明div作为带边框的边距,使用div通过边框半径打孔。
刚刚添加了更多:http://jsfiddle.net/julienetienne/Jw8pw/6/
//jquery
var lineHeight = $('#content p').css('line-height') ;
$('.line').css({height: lineHeight },0);
var x = $('#content').height();
$('#paper').css('height', x + 40 +"px");
你需要写一个脚本来手动添加行div,这样它们就可以填满溢出的纸张,但不会太多。
估计你在最大情况下使用的像素数(比如40px),你会做一些类似于"文本高度#content-div"除以自定义(40px)比率,加10(为了安全起见),这就是你需要"写"的行数
#paper没有溢出,所以欢迎更多的div行,但过多(如数百)有点懒惰
您可以在所有现代浏览器(包括IE9)中使用Canvas。下面的例子在IE7和IE8中不起作用,但我还没有在那里进行测试。
<!DOCTYPE html>
<html>
<head>
<title>Line Test</title>
<style type="text/css">
#ruled {
border: 1px solid red;
}
#textContainer {
position: absolute;
left: 0;
top: 0;
width: 580px;
height: 1200px;
font-size: 12px;
margin: 10px;
padding: 5px 10px;
line-height: 20px;
}
</style>
<script type="text/javascript">
function drawLines(){
// get the canvas element using the DOM
var canvas = document.getElementById('ruled');
var currentLineY = 0;
// Make sure we don't execute when canvas isn't supported
if (canvas.getContext){
// use getContext to use the canvas for drawing
var ctx = canvas.getContext('2d');
ctx.strokeStyle = "#CCC";
ctx.beginPath();
// draw some lines (the +1.5 offsets the text baseline
// and we use the .5 for crisp lines because the stroke()
// method requires floats, not ints
for (var i=1, imax=30; i<imax; i++) {
currentLineY = i*20 + 1.5;
ctx.moveTo(0,currentLineY);
ctx.lineTo(600,currentLineY);
}
ctx.stroke();
} else {
alert('You need a modern browser to see the lines.');
}
}
</script>
</head>
<body onload="drawLines()">
<canvas id="ruled" width="600" height="602"></canvas>
<div id="textContainer">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
<br><br>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
</body>
</html>
相关文章:
- 用Javascript修改内部标记的CSS规则
- 如何在JavaScript中创建打字机效果,这将考虑html标记规则
- 使用javascript或jquery覆盖css规则
- 新的javascript HTML元素不遵循css规则
- 通过jQuery或Javascript应用于父窗口的外部css规则
- 在javascript问题中应用复合css规则
- 将Javascript正则表达式模式转换为C++std::regex的规则
- 如何添加!对于使用JavaScript的样式表规则非常重要
- Javascript作用域规则和mongo-map/reduce函数
- JavaScript URL搜索规则
- 在javascript中创建元素时,CSS转换规则固有地被覆盖
- Javascript.替换元素“<termref/>"用规则的“;文本”;
- JavaScript Regex添加了一个仅用于正斜杠的规则
- 使用Javascript正则表达式解析css渐变规则
- CSS 规则在执行 JavaScript 时不会应用任何效果
- 如何将 css 规则应用于 Javascript 表达式
- 使用此标识符的函数的 JavaScript 范围规则
- 自定义 Sonar Javascript 插件规则,用于检查跨多个源文件的特定方法调用
- 断言元素列表遵循带有 JavaScript 承诺的规则
- 使用规则javascript拆分