LoginSignup
5
4

More than 5 years have passed since last update.

<textarea>にルーラーをつけたい

Last updated at Posted at 2016-03-02

この会話はフィクションです

―textareaの上にルーラーつけて欲しいんすけど。
「ブラウザのフォントによって横幅が違うんで無理っす。」

―うるさいやれ。
「じゃあせめてtextareaはMSゴシック固定にしやがれください。」

―それは却下だ。やれ。
「プロポーショナルとか半角とかでずれるじゃん。」

―そこは目をつぶってやるからありがたくおもえ。あとやれ。
「」

参考サイト様

javascriptで文字列の描画幅を取得する方法

コード

ruler.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>すべてのExcel方眼紙と戦うものたちへ</title>
<style>
* {
  margin:0;
  padding:0;
  font-family: meiryo, "MS ゴシック";
  font-size: 30px;
  box-sizing: content-box;
}
.ruler {
  font-size: 0;
  padding: 5px;
  width: 100%;
  white-space : nowrap;
  overflow : hidden;
}
.ruler li {
  display: inline-block;
  font-size: 9px;
  text-align: right;
  border-bottom: 1px solid #000;
}
.ruler li:nth-child(odd) {
  color: #aaa;
  border-bottom: 1px solid #aaa;
}
textarea {
  border:none;
  width:100%;
  padding:5px;
}
</style>
</head>
<body>
<ul class="ruler">
  <li class="ruler-scale">5</li>
  <li class="ruler-scale">10</li>
  <li class="ruler-scale">15</li>
  <li class="ruler-scale">20</li>
  <li class="ruler-scale">25</li>
  <li class="ruler-scale">30</li>
  <li class="ruler-scale">35</li>
  <li class="ruler-scale">40</li>
  <li class="ruler-scale">45</li>
  <li class="ruler-scale">50</li>
</ul>
<textarea>あいうえおかきくけこさしすせそ</textarea>
<span id="sample" style="visibility:hidden;position:absolute;white-space:nowrap;"></span>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(function(){
  function strWidth(str) {
    var e = $("#sample");
    var width = e.text(str).get(0).offsetWidth;
    e.empty();
    return width;
  }
  $(".ruler-scale").each(function(){
    $(this).css({
      "width": strWidth("") * 5 + "px"
    });
  });
})
</script>
</body>
</html>
5
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4