[英]Changing layout -how can I style this differently?
我有一些JSON数据,它渲染得非常好。
目前,我正在从超级对象中获取名称,价格,图像(请参见屏幕截图)。
但是,我需要对此进行样式设置,以使每条连衣裙看起来都像这样,但要水平放置(屏幕截图)
现在,我设法使用JS中的样式标签对图像进行样式设置,使其达到300像素,但是,我对如何对其余元素进行样式设置一无所知? 我是否使用普通的样式表?
这是我的 HTML-如您所见,我只有一个ID为jsonData的div,它保存所有数据。
<body>
<h1>IF YOU LIKE THIS, YOU MIGHT INTERESTED IN THESE</h1>
<div id="jsonData"></div>
<script src="app.js"></script>
<div id="jsonData">
</div>
</body>
这是我的JS
var obj = {
'placements': [
{
'id': '029148',
'name': 'Woodblock Play Suit',
'linkURL':'http://www.warehouse.co.uk/gb/just-arrived/all/woodblock-play-suit/029148.html',
'imageURL':'http://demandware.edgesuite.net/aaxe_prd/on/demandware.static/-/Sites-WAREHOUSE/default/dw0f93fcd4/images/hi-res/warehouse_02914899_2.jpg',
'price':'46.00'
},
{
'id':'0294526806',
'name':'Smock Dress',
'linkURL':'http://www.warehouse.co.uk/gb/just-arrived/all/smock-dress/0294526806.html',
'imageURL':'http://demandware.edgesuite.net/aaxe_prd/on/demandware.static/-/Sites-WAREHOUSE/default/dwc9d5ea05/images/hi-res/warehouse_02945268_5.jpg',
'price':'39.00'
},
{
'id':'0297180006',
'name':'Cami',
'linkURL':'http://www.warehouse.co.uk/gb/just-arrived/all/cami/0297180006.html',
'imageURL':'http://demandware.edgesuite.net/aaxe_prd/on/demandware.static/-/Sites-WAREHOUSE/default/dw4b954022/images/hi-res/warehouse_02971800_2.jpg',
'price':'9.00'
},
{
'id':'0298473606',
'name':'Asymmetric Wrap Cami Dress',
'linkURL':'http://www.warehouse.co.uk/gb/just-arrived/all/asymmetric-wrap-cami-dress/0298473606.html',
'imageURL':'http://demandware.edgesuite.net/aaxe_prd/on/demandware.static/-/Sites-WAREHOUSE/default/dw686fea84/images/hi-res/warehouse_02984736_2.jpg',
'price':'46.00'
},
{
'id':'0297155306',
'name':'Casual Stripe Tee',
'linkURL':'http://www.warehouse.co.uk/gb/just-arrived/all/casual-stripe-tee/0297155306.html',
'imageURL':'http://demandware.edgesuite.net/aaxe_prd/on/demandware.static/-/Sites-WAREHOUSE/default/dw4609af3e/images/hi-res/warehouse_02971553_2.jpg',
'price':'16.00'
}
]
};
var divId = document.getElementById('jsonData');
for(var i=0;i<obj.placements.length;i++) {
divId.innerHTML += '' + obj.placements[i]['name'];
divId.innerHTML += '<br>';
divId.innerHTML += '' + obj.placements[i]['price'];
divId.innerHTML += '<br>';
divId.innerHTML += '<img src="' + obj.placements[i]['imageURL'] + '" style="max-width: 300px" /><br />';
}
抱歉,如果这非常简单,我是呈现JSON的新手。
像这样调整代码
var divId = document.getElementById('jsonData');
for(var i=0;i<obj.placements.length;i++) {
divId.innerHTML += '<div class="block"><span class="name">' + obj.placements[i]['name'];
divId.innerHTML += '</span>';
divId.innerHTML += '<span class="price">' + obj.placements[i]['price'];
divId.innerHTML += '</span>';
divId.innerHTML += '<img class="image" src="' + obj.placements[i]['imageURL'] + '" style="max-width: 300px" /></div>';
}
之后,您将获得如下格式的输出
<div class="block">
<span class="name">OutputName</span>
<span class="price">OutputPrice</span>
<img class="image" src="OutputImage">
</div>
后来,通过应用css / less / sass可以很容易地在视觉上进行调整。
这是有关如何对齐宽度为300px的浮动框的较少示例;
.block {
widht: 300px;
float: left;
padding: 5px;
border: 1px solid red;
.price {
font-weight: bold;
width: 100%;
}
}
我可以推荐以下步骤:
好朋友! 不要使用javascript进行样式设置,只需将特定的class
属性添加到img
标记中,或更方便地根据需要将img
标记包装在div
,然后将类应用于这些divs
。 然后,您可以根据需要使用CSS进行样式设置。
例:
var divId = document.getElementById('jsonData');
for(var i=0;i<obj.placements.length;i++) {
divId.innerHTML += '' + obj.placements[i]['name'];
divId.innerHTML += '<br>';
divId.innerHTML += '' + obj.placements[i]['price'];
divId.innerHTML += '<br>';
divId.innerHTML += '<img src="' + obj.placements[i]['imageURL'] + '" class='myImage'" /><br />';
}
然后在单独的文件中添加CSS:
.myImage {
width: 300px;
}
//and for selecting any specific element use
div:nth-child(2) {
background: red;
color: black;
}
注意:将设计与逻辑和标记分开也是一种最佳实践。 如今,您可以在CSS中实现任何样式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.