在制作网页或移动端有时会用到一个效果,类似文章标题和文章描述的排列总是保持一样的行数,要么标题总是一行,多出的省略,要么标题内容1:3或2:2或3:1这样,今天练习这样的效果。

实现的原理:给标题和内容分别加上行高,获取标题的高度除以自身的行高,得知标题的行数,再分配内容的行数即可。

<style>
*{padding: 0;margin: 0; font-family: 'Microsoft Yahei'}
.book{
width: 320px;
border: 1px solid #ccc;
}
.bookli{
padding: 5px 10px;
border-bottom: 1px solid #ccc;
}
.bookdiv{
width: 300px;
overflow: hidden;
}
.title{
color:#666;
margin: 10px 0;
line-height: 23px; //标题的行高
}
.desc{
line-height: 23px; //内容的行高
overflow: hidden;
}
</style>
<h2>十大名花排行榜</h2>
<div class="book">
<ul>
<li class="bookli">
<div class="bookdiv">
<h4 class="title">好一朵魅力的茉莉花</h4>
<p class="desc">茉莉花,别名:茉莉,拉丁文名:木犀科、素馨属直立或攀援灌木,高达3米。小枝圆柱形或稍压扁状,有时中空,疏被柔毛。叶对生,单叶,叶片纸质,圆形、椭圆形、卵状椭圆形或倒卵形,两端圆或钝,基部有时微心形,在上面稍凹入或凹起,下面凸起,细脉在两面常明显,微凸起,除下面脉腋间常具簇毛外,其余无毛;裂片长圆形至近圆形,先端圆或钝。果球形,呈紫黑色。</p>
</div>
</li>
<li class="bookli">
<div class="bookdiv">
<h4 class="title">好一朵魅力的茉莉花好一朵魅力的茉莉花好一朵魅力的茉莉花</h4>
<p class="desc">茉莉花,别名:茉莉,拉丁文名:木犀科、素馨属直立或攀援灌木,高达3米。小枝圆柱形或稍压扁状,有时中空,疏被柔毛。叶对生,单叶,叶片纸质,圆形、椭圆形、卵状椭圆形或倒卵形,两端圆或钝,基部有时微心形,在上面稍凹入或凹起,下面凸起,细脉在两面常明显,微凸起,除下面脉腋间常具簇毛外,其余无毛;裂片长圆形至近圆形,先端圆或钝。果球形,呈紫黑色。</p>
</div>
</li>
<li class="bookli">
<div class="bookdiv">
<h4 class="title">好一朵魅力的茉莉花好一朵魅力的茉莉花好一朵魅力的茉莉花好一朵魅力的茉莉花好一朵魅力的茉莉花</h4>
<p class="desc">茉莉花,别名:茉莉,拉丁文名:木犀科、素馨属直立或攀援灌木,高达3米。小枝圆柱形或稍压扁状,有时中空,疏被柔毛。叶对生,单叶,叶片纸质,圆形、椭圆形、卵状椭圆形或倒卵形,两端圆或钝,基部有时微心形,在上面稍凹入或凹起,下面凸起,细脉在两面常明显,微凸起,除下面脉腋间常具簇毛外,其余无毛;裂片长圆形至近圆形,先端圆或钝。果球形,呈紫黑色。</p>
</div>
</li>
<li class="bookli">
<div class="bookdiv">
<h4 class="title">好一朵魅力的茉莉花</h4>
<p class="desc">茉莉花,别名:茉莉,拉丁文名:木犀科、素馨属直立或攀援灌木,高达3米。小枝圆柱形或稍压扁状,有时中空,疏被柔毛。叶对生,单叶,叶片纸质,圆形、椭圆形、卵状椭圆形或倒卵形,两端圆或钝,基部有时微心形,在上面稍凹入或凹起,下面凸起,细脉在两面常明显,微凸起,除下面脉腋间常具簇毛外,其余无毛;裂片长圆形至近圆形,先端圆或钝。果球形,呈紫黑色。</p>
</div>
</li>
</ul>
</div>
window.onload=function(){
//兼容不能使用getElementsByClassName的浏览器
function getClass(clas){
var cls=document.getElementsByTagName('*');
var arr=[];
for(var i=0;i<cls.length;i++){
if(clas==cls[i].className){
arr.push(cls[i]);
}
}
return arr;
}
    //控制行数的函数
function controlRow(title,content){
var title=getClass(title);
var desc=getClass(content);
var titleheight;
var descheight;
for(var j=0;j<title.length;j++){
(function(index){
// 获取css样式
if(window.getComputedStyle!="undefined"){ //兼容火狐、谷歌等主流浏览器
titleheight=window.getComputedStyle(title[index],null)['line-height'];
descheight=window.getComputedStyle(desc[index],null)['line-height'];
}else{ //兼容ie浏览器
titleheight=title[index].currentStyle['line-height'];
descheight=desc[index].currentStyle['line-height'];
}
var titleH=titleheight.substr(0,titleheight.length-2);
var descH=descheight.substr(0,descheight.length-2);
// 如果标题高度=行高,那么内容高度则是内容行高的3倍,内容+标题总是保持4行
if(title[index].offsetHeight/titleH==1){
desc[index].style.height=3*descH+'px';
}else if(title[index].offsetHeight/titleH==2){
desc[index].style.height=2*descH+'px';
}else if(title[index].offsetHeight/titleH==3){
desc[index].style.height=1*descH+'px';
}else{
alert("sorry,浏览器不兼容");
}
})(j);
}
}
controlRow('title','desc');
}

测试了谷歌和火狐。ie被我卸了一个文件,打不开。所以没测试。有测试的朋友也可以告诉我一声,谢啦。

原生js制作标题与内容保持4行的效果的更多相关文章

  1. 利用css+原生js制作简易钟表

    利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期 ...

  2. 使用 原生js 制作插件 (javaScript音乐播放器)

    1.引用页面 index.html <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  3. 原生js dom记忆的内容

    1.DOM基础getElementByIdgetElementByTagNamegetElementByName getElementsByClass querySelector querySelec ...

  4. 原生js制作播放器

    以前 就想做一个播放器,一直没狠下心来,今天终于狠下心来,把这个做出来了(因为有点无聊) 做这个播放器  也百度了一下, 你叫我做,我肯定做不出来, 就算用jquery  我也做不出来. 以前也用过a ...

  5. 原生js制作表单验证,基本的表单验证方法

    表单验证是web前端最常见的功能之一,也属于前端开发的基本功.自己完成一个表单验证的开发,也有助于加深对字符串处理和正则表达式的理解. 基本的表单验证包括如:字母验证.数字验证.字母和数字验证.汉字验 ...

  6. 原生JS制作简易Tabs组件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 原生js动态创建文本内容的几种方式

    1.通过CreateTextNode文本节点 首先创建该元素(元素节点),然后向一个已存在的元素追加该文本节点 <!DOCTYPE html> <html> <body& ...

  8. 原生JS制作验证码(优化)

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. 原生JS制作贪吃蛇小游戏

    感情都在代码里,来,干了!... <!doctype html> <html> <head> <meta http-equiv="Content-T ...

随机推荐

  1. 对csrf的理解

    用户浏览并登陆信任网站A 通过验证,在用户浏览器产出A的cookie 用户在没有登出A的情况下访问攻击网站B B要求访问第三方站点A,发出一个请求 根据B的请求,浏览器带着A的cookie访问A A不 ...

  2. flask内置函数 send_static_file(filename)

    内部使用的函数将静态文件从静态文件夹发送到浏览器. current_app.send_static_file(filename)

  3. 吃奶酪 状压dp

    题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...

  4. linux命令行添加图形化界面

    安装一个图形化的包即可!! yum update grub2-common yum install fwupdate-efi yum groupinstall "GNOME Desktop& ...

  5. Git远程库

    要关联一个远程主机,使用命令 git remote add origin <url> : 删除远程主机,使用命令 git remote rm origin ; git push 的一般形式 ...

  6. 使用Session监听器实现统计在线人数

    使用Session监听器实现统计在线人数 1.工作目录结构 包含监听器类和jsp页面 2.session监听器 首先利用session监听器来实现对访问网站时的session计数,当有session创 ...

  7. 同步FIFO学习

    在网上找的一个经典同步FIFO例子. 一.前言 FIFO (First-In-First-Out) 是一种先进先出的数据交互方式,在数字ASIC设计中常常被使用.FIFO按工作时钟域的不同又可以分为: ...

  8. vue2.0修饰符sync用法

    如果子组件是一个弹窗,我们想通过点击关闭按钮来关闭子组件弹窗,子组件弹窗的v-show由变量isVisible控制,这个变量通过props由父组件来注入, 而子组件无法改变props里面的变量的值,但 ...

  9. Django开发步骤

    Django开发步骤 Django框架每次开发的初始化的套路都基本一样,这里记录一下. 安装Django 首先安装Python软件,上python官网下载对应的安装包.接下来就是安装Django: p ...

  10. js中有关类、对象的增强函数

    javascript中继承的实现 基础实现 function Range(from,to){ this.from =from; this.to =to; } Range.prototype = { i ...