动态添加食谱配料文本不换行、无项目符号问题求助
解决配料文本换行与项目符号不显示问题
我来帮你排查并解决这两个棘手的问题:
一、配料文本无法自动换行
首先看你的CSS里有两处关键语法错误,直接导致换行样式失效:
.wordBreak类选择器少了开头的点号,写成了wordBreak——浏览器根本识别不到这个类的样式规则li.loopText里的margin 1px auto漏了冒号,应该是margin: 1px auto
另外,即使修复了语法,最好给li设置明确的宽度限制,避免它无限拉伸容器导致不触发换行。修改后的CSS如下:
li.loopText { display: list-item; /* 同时为项目符号显示做准备 */ overflow-wrap: break-word; /* 更友好的换行逻辑,避免生硬截断单词 */ word-break: break-word; padding: 2px; margin: 1px auto; width: 100%; /* 限制li宽度为容器宽度 */ list-style-type: circle; } .wordBreak { /* 修正类选择器语法 */ overflow-wrap: break-word; word-break: break-word; }
同时建议给卡片容器添加宽度限制,让内部元素有明确的换行边界:
.recipeCard { max-width: 600px; width: 100%; margin: 1rem auto; }
二、项目符号无法显示
这个问题的核心原因是你给li设置了display: block——列表项的项目符号只有在display: list-item时才会正常显示。另外,CSS重置表大概率把ul的padding-left清零了,导致符号被移出了可视区域。
解决步骤:
- 把li的
display: block改成display: list-item(上面的CSS已经同步修改) - 给ul添加左侧padding,让符号有足够的显示空间:
.recipeCard ul { padding-left: 2rem; margin: 0.75rem 0; }
如果CSS重置表还重置了ul的list-style属性,可以在上面的ul样式里加上list-style-type: circle;来强制覆盖。
额外代码优化建议
为了避免返回结果不足10条时报错,以及错误提示重复添加的问题,修改你的JavaScript循环逻辑:
.done(function(response) { console.log(response); // 错误提示放在循环外,无结果直接终止后续代码 if (response.hits.length === 0) { $("#recipeOutput").append("<p>" + "Please enter valid recipe ingredient or name." + "</p>"); return; } // 取10和结果长度的最小值,避免数组越界报错 for (var k = 0; k < Math.min(10, response.hits.length); k++){ var foodDiv = $("<div class = 'recipeCard'>"); var recipeName = response.hits[k].recipe.label; var pOne = $("<p>").html("<h2>" + recipeName + "</h2>"); foodDiv.append(pOne); var recipePic = response.hits[k].recipe.image; var pTwo = $("<img class='recipeImage'>").attr("src", recipePic); foodDiv.append(pTwo); var recipeURL = response.hits[k].recipe.shareAs; var pThree =$("<p>").html("<a target='_blank' href='" + recipeURL + "'>" + "Get full recipe here" + "</a>"); foodDiv.append(pThree); var length = response.hits[k].recipe.ingredients.length; var ingList = $("<ul>"); for (var i = 0; i < length; i++){ var ing = response.hits[k].recipe.ingredients[i].text; var pFour = $("<li class='loopText wordBreak'>").text(ing); ingList.append(pFour); }; foodDiv.append(ingList); var health = response.hits[k].recipe.healthLabels; var pFive = $("<p>").text(health); foodDiv.append(pFive); $("#recipeOutput").append(foodDiv); } });
内容的提问来源于stack exchange,提问作者Whit W
相关产品推荐
相关产品推荐

