html - 海滩背景中间图像垂直重复必须显示全尺寸以匹配底部图像

标签 html css web

我花了 10 多个小时试图找到问题的解决方案(大多数答案都在 Stack Overflow 上),但似乎没有什么完全符合我的需要,而且我可能没有足够的经验来针对我自己的问题调整解决方案。

因此,我制作了一张图片,希望文本出现在我的网站上。但仅限于该图片(框架)内。所以我把它切成三部分并使其可平铺。

这 3 个图像及其外观(注意其中有透明部分): The 3 images and what it should look like (notice the fact there are transparent parts)

所以我在 html/css 中做了什么:我制作了 4 个 div,一个用于顶部部分,一个用于中间部分,一个用于底部部分,一个用于页面内容(文本或图像)。

中间部分有一个repeat-y。所以这是当文本长于中间部分(242px)时的结果:

Middle image is cropped

在上图中,中间有两张图片(第一张和重复的一张,但会自动裁剪)。根据文本的长度,它被剪切在错误的位置,并且弄乱了一切。每次它都必须完美贴合,如果它的长度超过 242 像素(顶部图像的高度),则它不会完全贴合。 我希望 div 在重复时显示整个“middle.png”,或者使 div 长度 = (242 像素 * “middle.png”的数量)

如果可能的话,请帮助我使用纯 CSS/HTML。我对 PHP 几乎一无所知,对 JS 知之甚少(甚至对 Jquery 知之甚少:D)。

最佳答案

您所要求的内容无法用纯 HTML/CSS 完成(据我所知)。您需要对 div 高度进行一些计算,并基于此应用适当的逻辑。

基本上,您需要检查 div 高度 是否能被 242 整除。如果是的话,酷,大家都很高兴,如果不是,那么将 div 的高度设置为 下一个能被 242 整除的第一个数字。

纯 JavaScript

<script>
r(function(){

        var div = document.getElementsByClassName('myDiv')[0];
        var divHeight = div.offsetHeight;

        if (divHeight % 242 != 0) { // checks if height is divisible by 242
            div.style.height = ""+(Math.ceil(divHeight / 242) * 242)+"px"; // set height as the next number divisible by 242
         }
    });
    function r(f){/in/.test(document.readyState)?setTimeout('r('+f+')',9):f()}
</script>

WORKING PURE JS EXAMPLE

OR如果您更熟悉jQuery框架,它看起来像这样:

    //First, add the jQuery library
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>

然后添加完成所有工作的代码

    <script>
         $(document).ready(function() {
              var div = $('.myDiv');
              var divHeight = div.height();

              if (divHeight % 242 != 0) { // checks if height is divisible by 242
                    div.height(Math.ceil(divHeight / 242) * 242); // set height as the first next larger number divisible by 242
              }
         });
   </script>

WORKING JQUERY EXAMPLE

关于html - 海滩背景中间图像垂直重复必须显示全尺寸以匹配底部图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123186/

相关文章:

javascript - 悬停在链接上时的新图像

html - 当用户按 Enter 键时,如何选择单击哪个表单按钮(默认)?

javascript - Angular Material 表拖放列排序不起作用

python - "Didn' t 返回一个 HttpResponse 对象。它在 POST 请求上返回 None 而不是“

vue.js - 前端和后端之间的 HTTPS

php - 抓取网站和动态网址

html - 没有内联的 Flexbox 容器适合内容

html - Bootstrap 4 Navbar Flex 与 Brand Center 的突破

html - 菜单的样式下拉部分

jquery - 为什么导航菜单栏滑动不流畅?