【问题标题】:Displaying images from a json file onto HTML file but styling isnt working on them将 json 文件中的图像显示到 HTML 文件中,但样式不适用于它们
【发布时间】:2023-03-30 02:13:02
【问题描述】:

编辑 - 只是为了澄清图像显示在我的网页上,代码示例样式(css)只是不会以任何方式对任何图像产生影响。如果我给它一个类,如果我在 HTML 中给它直接样式(使用 style=""),或者如果我使用 jQuerys .addClass 或 .css,那么样式就不起作用了。

所以这是我的 html 图像显示的地方。

<div class="Hats2">

</div>

现在这是我用来显示图像的 jquery

$(function() {

    var products = []

    $.getJSON('test.json', function(data) {
        $.each(data.products, function(i, f) {
            var tblRow = '<div class="Hats"><img src=' + f.imUrl + '></div>'
            $(tblRow).appendTo(".Hats2");
        })
    })
})

现在我只有三行 CSS,可以在“帽子”类下更改它们的大小。我通过使用 img 元素本身和 div 来给出图像(就像现在一样)

.Hats {
    width: 200px;
    height: 200px;
}

但由于某种原因,css 根本没有生效我尝试了所有不同的样式,如边框半径等。根本没有样式。是因为我通过 jquery 上课了吗?我真的很困惑。这是我的 json 文件,以防万一。

{ "products": [
{
  "title": "Hat",
  "imUrl": "http://ecx.images-amazon.com/images/I/41pRaO7fFSL._SX395_.jpg"
},
{
  "title": "Hat2",
  "imUrl": "http://ecx.images-amazon.com/images/I/41z9Fhv41lL._SY300_.jpg"
},
{
  "title": "Hat3",
  "imUrl": "http://ecx.images-amazon.com/images/I/41y-UNn0QLL._SX342_.jpg"
}
]
}

【问题讨论】:

  • @theonlygusti 我刚刚复制了你的建议并在我的代码中替换它,我仍然有同样的问题

标签: javascript jquery html css json


【解决方案1】:

这行不通。

$(tblRow).appendTo(".Hats2");

你应该放

$(tblRow).appendTo($(".Hats2"));

【讨论】:

  • 谢谢你的回答,我也试过了,还是一样的问题。
  • 您能否检查是否可以将 css 应用于同一文件中的任何元素。样式表可能未链接到文档。或者你能不能做一个jsfiddle或者plunker页面,这样我们调试会更容易
【解决方案2】:

问题在于,即使.Hats div 的样式正确,也就是说,正如您在 CSS 中所说,它们是 200x200px,但您放入其中的图像元素更大.

即使图像是 .Hats div 的子元素,它们也会超出其父元素的边界。

只需添加这个 css 规则:

.Hats > img {
  max-width: 100%;
  max-height: 100%;
}

适合图像在其父 div 内。

var data = {
  "products": [
    {
      "title": "Hat",
      "imUrl": "http://ecx.images-amazon.com/images/I/41pRaO7fFSL._SX395_.jpg"
    },
    {
      "title": "Hat2",
      "imUrl": "http://ecx.images-amazon.com/images/I/41z9Fhv41lL._SY300_.jpg"
    },
    {
      "title": "Hat3",
      "imUrl": "http://ecx.images-amazon.com/images/I/41y-UNn0QLL._SX342_.jpg"
    }
  ]
};

$(document).ready(function() {
  $.each(data.products, function(i, f) {
    var tblRow = '<div class="Hats"><img src="' + f.imUrl + '"></div>';
    $(tblRow).appendTo(".Hats2");
  });
});
.Hats {
    width: 200px;
    height: 200px;
}

.Hats > img {
  max-width: 100%;
  max-height: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="Hats2">

</div>

【讨论】:

  • 你知道为什么其他样式不适用于 .Hats 吗?例如,如果我把 display: none;在 CSS 中的 Hats 类下它也不起作用?
  • @Jake123 将display:none; 放在.Hats 的样式中对我来说非常有效。它使所有图像“消失”,这就是这种风格的本意。
  • 是的,我知道这就是我试图隐藏它们直到单击按钮但它们不会消失
  • 抱歉忽略了,我已经管理好了,我把它设置为 '.Hats .Pants .Tops .Shoes { display none; }' 并且由于某种原因无法正常工作,但是如果我将其他 3 个取出并保留为 .Hats 就可以了:S
  • @Jake123 如果您希望它们 all 不显示,则需要用逗号分隔它们。 .Hats, .Pants, .Tops, .Shoes { display none; }
【解决方案3】:

您应该将 Hats 类分配给 img,如下所示:

$(function() {

var products = []

$.getJSON('test.json', function(data) {
    $.each(data.products, function(i, f) {
        var tblRow = '<div><img class="Hats" src=' + f.imUrl + '></div>'
        $(tblRow).appendTo(".Hats2");
    })
    $(".Hats").css({width: "200px", height: "200px"});
});

})

【讨论】:

  • 它对我有用,你的 test.json 文件在同一个文件夹中吗?
  • @Jake123 这个答案应该有效。也许它会扭曲图像,但您的问题并没有说这是不可取的或提出任何具体要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 2021-05-23
  • 2013-04-09
  • 2018-12-07
相关资源
最近更新 更多