之前已经实现了基本的绘本查询的功能的web端页面了:
现在需要去根据UI设计
效果图:
尺寸标注:
去优化UI界面显示。
从上到下,先去优化LOGO的图和文字
再去优化搜索框
【已解决】HTML5的web网站中设置字体类型为PingFangSC-Regular和微软雅黑
然后现在去:
【部分解决】bootstrap 4中如何给输入框右边加上清除叉叉的按钮
然后再去优化查询页的下面的列表
然后用代码:
html
<div class="search_result"> <ul class="list-group list-group-flush" id="search_result_book_list"> </ul> </div>
css
.xxx_bkg_color { background-color: #61D2B3; } .logo{ /* width: 162px; height: 144px; */ /* width: 81px; height: 72px; */ /* padding: 10px 2%; */ padding-top: 24px; padding-bottom: 25px; } h2{ text-align: center; margin-bottom: 20px; font-size: 24px; font-family: "PingFangSC-Regular", "苹方", "Microsoft Yahei", "微软雅黑", "Heiti SC"; } h4{ text-align: center; margin-top: 0px; margin-bottom: 20px; } form { text-align: center; } .input_query { padding-left: 39px; padding-right: 39px; } .single_storybook_item { font-family: "PingFangSC-Medium", "Microsoft Yahei", "微软雅黑", "Heiti SC"; font-size: 14px; color: #666666; } .book_list_text_row{ margin-bottom: 10px; } /* p.single_storybook_item { margin-bottom: 10px; } */ .book_list_cover_image { border-radius: 8px; margin-right: 22px; } .book_list_title{ font-size: 18px; color: #333333; margin-bottom: 10px; } .book_list_keys{ color: #333333; } .list-group-item { /* padding: 0.75rem 0.75rem; */ /* padding: 0 0; */ /* padding-top: 0; padding-right: 0; padding-left: 0; padding-bottom: 15px; */ padding: 0 0 15px 0; border: none; } .mr-2, .mx-2 { margin-right: 0.75rem !important; } .search_result { padding-top: 28px; padding-left: 15px; /* padding-right: 15px; */ }
相关js:
if (!isEmptyObj(bookDictList)) { for(var eachBookDict of bookDictList){ console.log('eachBookDict=', eachBookDict) var eachBookHtml = generateBookItemHtml(eachBookDict) $(bookSelectStr).append(eachBookHtml) } } function generateTagsHtml(tags){ console.log("generateTagsHtml: tags=%o", tags) var tagsHtml = "" const BadgeType = "badge-secondary" const BadgeBillType = "badge-pill " + BadgeType + " xxx_bkg_color" for(var eachTag of tags){ // eachTagHtml = `<span class="badge ${BadgeType}">${eachTag}</span>` eachTagHtml = `<span class="badge ${BadgeBillType}">${eachTag}</span>` tagsHtml += eachTagHtml } console.log("tagsHtml=", tagsHtml) return tagsHtml } function generateBookItemHtml(curBookDict){ console.log("generateBookItemHtml: curBookDict=%o", curBookDict) var coverImgUrl = curBookDict["coverImgUrl"] console.log("coverImgUrl=", coverImgUrl) if (!coverImgUrl){ coverImgUrl = "img/cover_img_default.png" console.log("default coverImgUrl=", coverImgUrl) } var title = curBookDict["title"] console.log("title=", title) var imgAltStr = "" if (coverImgUrl) { imgAltStr = title } else { imgAltStr = "" } console.log("imgAltStr=", imgAltStr) // var authorsStr = listToStr(curBookDict["authors"]) var authorsStr = listToStr(curBookDict["author"]["bookAuthors"]) console.log("authorsStr=", authorsStr) // var illustratorsStr = listToStr(curBookDict["illustrators"]) var illustratorsStr = listToStr(curBookDict["author"]["illustrators"]) console.log("illustratorsStr=", illustratorsStr) var gradesStr = listToStr(curBookDict["grades"]) console.log("gradesStr=", gradesStr) var tagsHtml = generateTagsHtml(curBookDict["tags"]) console.log("tagsHtml=", tagsHtml) // <img class="cover_image align-self-center mr-2" width="100" height="140" src="${coverImgUrl}" alt="${imgAltStr}"> // <h5 class="mt-0">${title}</h5> // <p><strong>作者: </strong>${authorsStr}</p> // <p><strong>兰斯指数: </strong>${curBookDict["grading"]["lexile"]}</p> // <p><strong>参考年龄: </strong>${gradesStr}</p> // <p><span class="book_list_keys">作者:</span>${authorsStr}</p> // <p><span class="book_list_keys">兰斯指数:</span>${curBookDict["grading"]["lexile"]}</p> // <p><span class="book_list_keys">参考年龄:</span>${gradesStr}</p> var curBookItemHtml = ` <li class="list-group-item single_storybook_item"> <div class="media"> <img class="book_list_cover_image align-self-center" width="100" height="140" src="${coverImgUrl}" alt="${imgAltStr}"> <div class="media-body"> <h5 class="book_list_title">${title}</h5> <div hidden><strong>ID: </strong><div id="book_id">${curBookDict["id"]}</div></div> <p class="book_list_text_row"><span class="book_list_keys">作者:</span>${authorsStr}</p> <p class="book_list_text_row"><span class="book_list_keys">兰斯指数:</span>${curBookDict["grading"]["lexile"]}</p> <p class="book_list_text_row"><span class="book_list_keys">参考年龄:</span>${gradesStr}</p> ${tagsHtml} </div> </div> </li>` console.log('curBookItemHtml=', curBookItemHtml) return curBookItemHtml }
效果是:
再去优化详情页的内容
现在是:
希望优化为:
【已解决】html中独立出通用部分css供其他css文件导入
然后继续优化详情页布局。
【已解决】bootstrap 4中给图片左右居中对齐和上下加边距
然后再去想办法画出列表:
【已解决】Bootstrap 4中实现键值对的列表
然后再去加上返回按钮:
bootstrap img back left
bootstrap back button img
代码:
<div class="single_book_detail"> <button class="back_home_button" id="back_home"> <img width="22px" height="22px" src="img/back_to_home.png"> </button> <div class="text-center book_detail_cover_img_parent"> <img class="book_detail_cover_img" src="${coverImgUrl}" alt="${imgAltStr}"> </div>
但是导致图片下移了:
然后用:
.back_home_button{ position: absolute; }
解决了问题:
现在又发现其他特殊情况,图片尺寸不标准,导致显示异常:
搜still,可以发现有个图片异常:
然后去把:
var curBookItemHtml = ` <li class="list-group-item single_storybook_item"> <div class="media"> <img class="book_list_cover_image" width="100" height="140" src="${coverImgUrl}" alt="${imgAltStr}">
改为:
var curBookItemHtml = ` <li class="list-group-item single_storybook_item"> <div class="media"> <div class="text-center"> <img class="book_list_cover_image" width="100" height="140" src="${coverImgUrl}" alt="${imgAltStr}"> </div>
即,给img的parent加上text-center,即可让图片正常居中显示了:
目前显示效果基本还不错了:
不过简介还是全部显示的,需要再去优化为:
继续之前的:
【基本解决】bootstrap中实现默认显示一段内容点击more后显示全部
【部分解决】bootstrap 4中如何给输入框右边加上清除叉叉的按钮
【部分解决】HTML中如何获取输入框的输入法的搜索或完成按钮的事件
然后继续
转载请注明:在路上 » 【记录】优化绘本查询系统的UI