javascript - 如何使边距在我的 JS 中动态创建的 div 上起作用?

标签 javascript html css

HTML:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"/>
 <link rel="stylesheet" type="text/css" media="all" href="css/animate.min.css"/>
  <link href="http://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css"/>
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"/>
 <link rel="stylesheet" href="css/thisProject.css"/>
 <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
  <h1 class="text-primary">Wiki Article Search</h1>

  <div>
    <input type="text" id="input"/>
    <button id="search">Search</button>
    <a id="random" class="btn btn-primary" target="_blank" href="http://en.wikipedia.org/wiki/Special:Random">Press For Random</a>
  </div>
 </br>
  <div id="bodyDiv">
  </div>
   <script src="wikiViewer.js"></script>
</body>
</html>

JavaScript:

(function(){
var searchBtn = document.getElementById('search');
//var body = document.getElementsByTagName('body')[0];
var input = document.getElementById("input");
var bodyDiv = document.getElementById('bodyDiv')
$(document).ready(function(){
  searchBtn.addEventListener('click', searchWiki);
  function searchWiki(){
    bodyDiv.innerHTML = "";
    var url = 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch='
    if (input.value === ""){
        return;
    }
    var searchTerm = input.value.replace(/\s/g, '%20');
    url = url + searchTerm + '&callback=?';
    $.getJSON(url, domMod); //change fileName to be whatever we wish to search
      function domMod(json){ //what to do with dom based on json file  NOTE WE NEED TO FIRST CHECK ANDREMOVE PREVIOUS SEARCH CONTENT
        var entry;
        if (!json.hasOwnProperty('query')){
            return;
        }
        if (!json.query.hasOwnProperty('pages')){
            return;
        }
        json = json.query.pages;
        var keys = Object.keys(json);
        var keysLength = keys.length;
        for (var i = 0; i < keysLength; i++){ 
            entry = json[keys[i]];
            var outterDiv = document.createElement('div');
            outterDiv.className = "entry";
            var imageDiv = document.createElement('div');
            imageDiv.className = "entryImg";
            var entryDiv = document.createElement('div');
            entryDiv.className = "entryTxt";
            outterDiv.appendChild(imageDiv);
            outterDiv.appendChild(entryDiv);
            entryDiv.innerHTML = '<h2>' + entry.title + '</h2>' + '<p>' + entry.extract + '</p>'
        if (entry.hasOwnProperty('thumbnail')){ //add image to our imageDiv child of entryDiv
            imageDiv.style.backgroundImage = "url('" + entry.thumbnail.source + "')"
        }
        var br = document.createElement('br');
        bodyDiv.appendChild(outterDiv); //appendChild to the Body 
        bodyDiv.appendChild(br);
    }
   }
 } 

  });
}())

CSS:

input{
    width:180px;
}
.entry{
    width:90%;
    margin-left:auto;
    margin-right:auto;
    height: 140px;
}
.entryTxt{
    margin-left: 5px;

}
.entryImg{
    width:125px;
    height:125px;
    margin-right: 5px;
    background-repeat: no-repeat;
    background-size: contain;
    background-position: center;
    float:left;
}
#bodyDiv{
    width: 100%;
    height: 1600px;
}

javascript 代码遍历维基百科 API 根据用户的搜索词返回的每个返回对象。然后它将图像放入类为“entryImg”的 div 中,将条目文本放入名为“entryTxt”的 div 中。然后,它会将这些中的每一个都放在一个标记为 outterDiv 的 div 中,该 div 附加到我的 HTML 中已有的 ID 为“bodyDiv”的 div。我的问题是,在每个 outterDiv 中,为什么不管我改变多少边距,图片和文本 div 彼此如此接近。我将 5px 放在文本的左边距上,将 5px 放在图片 div 的右边距上,可以看到,更改没有出现在浏览器中。为什么会这样,我该如何解决?

最佳答案

根据您的 javascript 代码,生成的 html 将是

<div id="bodyDiv">
    <div class="entry">
        <div class="entryImg"></div>
        <div class="entryTxt">
            <h2>lorem ipsum</h2>
            <p>lorem ipsum</p>
        </div>
    </div>
</div>

并且,使用您的 css,您可以将图像和文本之间的空间增加

.entryImg 上增加 margin-right

.entryImg {
    margin-right: 10px;
}

或者,在 .entryTxt 上添加 overflow: hidden; 后增加 margin-left

.entryTxt {
    margin-left: 10px;
    overflow: hidden;
}

检查这个fiddle

关于javascript - 如何使边距在我的 JS 中动态创建的 div 上起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35292756/

相关文章:

javascript - 确定数组的变化方向

javascript - 单击图像区域可更改该区域的颜色

javascript - javascript 新手,这适合什么样的主题?

css - 调整窗口大小时如何防止导航栏移动

javascript - JS 隐藏标题元素并调整滚动条上的导航栏大小

javascript - 是否有一些库可用于 IQR 代码(不是 QR 代码)?

javascript - 使用函数从数组中查找最小值和最大值

javascript - 如何用jquery制作文本向右滑动的动画

HTML 文本环绕圆框

css - 跨浏览器透明字母