楽天、ヤフーショッピングなどで商品名を3点リーダーで省略する<複数行に対応CSS>

楽天やヤフーショッピングのゴールド、トリプルでページを作成する場合どうしても長い商品名を省略したい場合ばあります。

2行で省略、3行で省略、簡単に実現できるCSSが下記、IEにも対応しています。

/* 省略1行 */
.ellipsis1 {
    position: relative;
    height: 20px;
    overflow: hidden;
    line-height: 20px;
}
.ellipsis1:before, .ellipsis1:after {
    position: absolute;
    background: #fff;
}
.ellipsis1:before {
    content: "・・・";
    bottom: 0;
    right: 0;
}
.ellipsis1:after {
    content: "";
    width: 100%;
    height: 100%;
}
/* 省略2行 */
.ellipsis2 {
    position: relative;
    height: 40px;
    overflow: hidden;
    line-height: 20px;
}
.ellipsis2:before, .ellipsis2:after {
    position: absolute;
    background: #fff;
}
.ellipsis2:before {
    content: "・・・";
    bottom: 0;
    right: 0;
}
.ellipsis2:after {
    content: "";
    width: 100%;
    height: 100%;
}
/* 省略3行 */
.ellipsis3 {
    position: relative;
    height: 60px;
    overflow: hidden;
    line-height: 20px;
}
.ellipsis3:before, .ellipsis3:after {
    position: absolute;
    background: #fff;
}
.ellipsis3:before {
    content: "・・・";
    bottom: 0;
    right: 0;
}
.ellipsis3:after {
    content: "";
    width: 100%;
    height: 100%;
}

※IE対応で見栄えを揃えるため1行省略では定番の

    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;

を使用していません。

複数行を使用しない場合はシンプルに

.ellipsis { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

で良いと思います。

参考 複数行にも対応!CSS を使ってはみ出した文字を「・・・」で省略する方法

ただ、この方法だとレスポンシブデザインで文字が半分欠けて3点リーダーが表示される場合があり見栄えが良くありません。

line-clampプロパティを使用する

2019年現在、IEはサポート外ですがline-clampプロパティは主要なすべてのブラウザでサポートされています。もうIEは無視してもいいかな~と思うので今は「line-clamp」を使ってます。

CSSもとてもシンプルになりますね。

/* 省略1行 */
.ellipsis {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/* 省略2行 */
.ellipsis2 {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;  
overflow: hidden;
}
/* 省略3行 */
.ellipsis3 {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;  
overflow: hidden;
}

iOSブラウザ(サファリ)で3点リーダーの場所がおかしい

省略テキストがリンク文字の場合、末尾ではない部分に3点リーダーが出てしまう場合があるそうです。その場合はHTMLの文字を<span></span>で囲むと治るらしい。

<a href="#"><span>3点リーダーで省略したいTXT</span></a>

 

コメント

タイトルとURLをコピーしました