这是我试图实现的效果:
当用户将鼠标移动到图像上时,文本行应以对角线方式覆盖图像.
图像可以是< p>的背景.真的只是需要帮助,首先使完整的东西对角线.不想使用硬编码的尺寸/位置,不适用于不同宽度/高度的屏幕.
<div class="testrows"> <div class="drow"><p>Hello World</p></div> <div class="drow"><p>Hello World</p></div> <div class="drowhalf"> <p>Hello World</p><p>Hello World</p> </div> <div class="drowhalf"> <p>Hello World</p><p>Hello World</p> </div> <div class="drow"><p>Hello World</p></div> <div class="drow"><p>Hello World</p></div> </div>
CSS
body { background: #e5e5e5; height:100%; } .testrows{ display:block; height:100%; } .drow { width: 100%; height: 10%; background: black; position: absolute; top: -50px; left: 0; -ms-transform: rotate(45deg); -webkit-transform: rotate(45deg); transform: rotate(45deg); text-align: center; color: #fff; vertical-align: middle; } .drow p { ms-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); transform: rotate(-90deg); padding-right: 60px; width: 100%; padding-bottom: 55px; } .drowhalf { width: 100%; height: 10%; background: black; position: absolute; top: -50px; left: 0; -ms-transform: rotate(45deg); -webkit-transform: rotate(45deg); transform: rotate(45deg); text-align: center; color: #fff; vertical-align: middle; } .drowhalf p { ms-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); transform: rotate(-90deg); padding-right: 60px; width: 50%; padding-bottom: 55px; }
解决方法
您可以通过包装器(.inner-wrapper)包装所有.drow元素,然后旋转(
DRY),将
transform-origin
设置为左上角,从元素的左上角旋转,最后将translateX(-50%)赋给.inner-wrapper将其置于其父母中心.
对于拉伸.drow,您可以给width:200%给.inner-wrapper.
要计算.drow的高度,你必须使用js.
function stretch(){ var $wrapper = $('.wrapper'),diagonal = Math.ceil(Math.sqrt(Math.pow($wrapper.width(),2) + Math.pow($wrapper.height(),2))),height = diagonal / $wrapper.find('.inner-wrapper .drow').length; $wrapper.find('.inner-wrapper .drow').height(height).css('line-height',height + 'px'); } $(document).ready(function(){ stretch(); }); $( window ).resize(function(){ stretch(); });
html,body { margin: 0; padding: 0; } html,body,.wrapper,.inner-wrapper { height: 100%; } body { background: #e5e5e5; } p { margin: 0; } .wrapper { overflow: hidden; } .inner-wrapper { transform: rotate(-45deg) translateX(-50%); transform-origin: top left; text-align: center; width: 200%; } .drow { height: 100px; line-height: 100px; color: #fff; background: rgba(0,1); } .drowhalf p { display: inline-block; width: 50%; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="wrapper"> <div class="inner-wrapper"> <div class="drow"> <p>Hello World</p> </div> <div class="drow"> <p>Hello World</p> </div> <div class="drow drowhalf"> <p>Hello World</p><p>Hello World</p> </div> <div class="drow drowhalf"> <p>Hello World</p><p>Hello World</p> </div> <div class="drow"> <p>Hello World</p> </div> <div class="drow"> <p>Hello World</p> </div> </div> </div>