css – 带有文本的网页上的对角图像

前端之家收集整理的这篇文章主要介绍了css – 带有文本的网页上的对角图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我试图实现的效果

用户将鼠标移动到图像上时,文本行应以对角线方式覆盖图像.

图像可以是< p>的背景.真的只是需要帮助,首先使完整的东西对角线.不想使用硬编码的尺寸/位置,不适用于不同宽度/高度的屏幕.

  1. <div class="testrows">
  2. <div class="drow"><p>Hello World</p></div>
  3. <div class="drow"><p>Hello World</p></div>
  4. <div class="drowhalf">
  5. <p>Hello World</p><p>Hello World</p>
  6. </div>
  7. <div class="drowhalf">
  8. <p>Hello World</p><p>Hello World</p>
  9. </div>
  10. <div class="drow"><p>Hello World</p></div>
  11. <div class="drow"><p>Hello World</p></div>
  12. </div>

CSS

  1. body {
  2. background: #e5e5e5;
  3. height:100%;
  4. }
  5.  
  6. .testrows{
  7. display:block;
  8. height:100%;
  9. }
  10.  
  11. .drow {
  12. width: 100%;
  13. height: 10%;
  14. background: black;
  15. position: absolute;
  16. top: -50px;
  17. left: 0;
  18. -ms-transform: rotate(45deg);
  19. -webkit-transform: rotate(45deg);
  20. transform: rotate(45deg);
  21. text-align: center;
  22. color: #fff;
  23. vertical-align: middle;
  24. }
  25.  
  26. .drow p {
  27. ms-transform: rotate(-90deg);
  28. -webkit-transform: rotate(-90deg);
  29. transform: rotate(-90deg);
  30. padding-right: 60px;
  31. width: 100%;
  32. padding-bottom: 55px;
  33. }
  34.  
  35. .drowhalf {
  36. width: 100%;
  37. height: 10%;
  38. background: black;
  39. position: absolute;
  40. top: -50px;
  41. left: 0;
  42. -ms-transform: rotate(45deg);
  43. -webkit-transform: rotate(45deg);
  44. transform: rotate(45deg);
  45. text-align: center;
  46. color: #fff;
  47. vertical-align: middle;
  48. }
  49.  
  50. .drowhalf p {
  51. ms-transform: rotate(-90deg);
  52. -webkit-transform: rotate(-90deg);
  53. transform: rotate(-90deg);
  54. padding-right: 60px;
  55. width: 50%;
  56. padding-bottom: 55px;
  57. }

https://jsfiddle.net/ufwmuuv4/

解决方法

您可以通过包装器(.inner-wrapper)包装所有.drow元素,然后旋转( DRY),将 transform-origin设置为左上角,从元素的左上角旋转,最后将translateX(-50%)赋给.inner-wrapper将其置于其父母中心.

对于拉伸.drow,您可以给width:200%给.inner-wrapper.

要计算.drow的高度,你必须使用js.

Jsfiddle

  1. function stretch(){
  2. 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;
  3. $wrapper.find('.inner-wrapper .drow').height(height).css('line-height',height + 'px');
  4. }
  5.  
  6. $(document).ready(function(){
  7. stretch();
  8. });
  9.  
  10.  
  11. $( window ).resize(function(){
  12. stretch();
  13. });
  1. html,body {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. html,body,.wrapper,.inner-wrapper {
  6. height: 100%;
  7. }
  8. body {
  9. background: #e5e5e5;
  10. }
  11. p {
  12. margin: 0;
  13. }
  14. .wrapper {
  15. overflow: hidden;
  16. }
  17. .inner-wrapper {
  18. transform: rotate(-45deg) translateX(-50%);
  19. transform-origin: top left;
  20. text-align: center;
  21. width: 200%;
  22. }
  23. .drow {
  24. height: 100px;
  25. line-height: 100px;
  26. color: #fff;
  27. background: rgba(0,1);
  28. }
  29. .drowhalf p {
  30. display: inline-block;
  31. width: 50%;
  32. }
  1. <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  2. <div class="wrapper">
  3. <div class="inner-wrapper">
  4. <div class="drow">
  5. <p>Hello World</p>
  6. </div>
  7. <div class="drow">
  8. <p>Hello World</p>
  9. </div>
  10. <div class="drow drowhalf">
  11. <p>Hello World</p><p>Hello World</p>
  12. </div>
  13. <div class="drow drowhalf">
  14. <p>Hello World</p><p>Hello World</p>
  15. </div>
  16. <div class="drow">
  17. <p>Hello World</p>
  18. </div>
  19. <div class="drow">
  20. <p>Hello World</p>
  21. </div>
  22. </div>
  23. </div>

猜你在找的CSS相关文章