タグ

ブックマーク / terkel.jp (13)

  • アスペクト比の異なる画像を同じ面積で表示する

    ブログ記事の文などで幅100%の画像を配置する場合、縦長の画像がやたらでかくなってしまったりなど、画像のアスペクト比によってその印象が大きく違ってしまうことがある。これをアスペクト比に関わらず大きさが揃って見えるようにしたい。それには各画像の面積が同じになるように幅をコントロールできればいいのではと考え、CSSでやってみた。 まず基準になる画像として、もっとも横長な画像のアスペクト比を決める。ここでは例として16 : 9とする。この16 : 9画像の幅を100%として、それ以外のアスペクト比の画像の相対的な幅を求めていく。 HTMLでは、各img要素のstyle属性に、アスペクト比を分数形式にしてカスタムプロパティとして指定する。 <img src="cat.jpg" style="--aspect-ratio: 16/9;"> <img src="dog.jpg" style="--a

    アスペクト比の異なる画像を同じ面積で表示する
  • Sass の @extend はどこがすごいのか

    この記事では Less & Sass Advent calendar 2011 の 16 日目として、Sass の @extend 機能について書いてみます。が、諸事情により締め切りを過ぎてからあわてて書いており、かなりとっ散らかったものになるであろうことをあらかじめお断りしておきます。 さて、まずは @extend の基的な機能についてざっとおさらい。@extend される側として一連のスタイルを定義したセレクタがあり、そのセレクタを @extend で継承しつつプロパティを追加したりして、新しいセレクタを作ります: // SCSS // 継承元のセレクタ .button { display: inline-block; border: 1px solid gray; background-color: silver; &:hover { border-color: black; }

    Sass の @extend はどこがすごいのか
  • MathSass v0.9.1

    Sass の数学関数ライブラリ、MathSass を少しアップデートした。 terkel/mathsass · GitHub おもな変更は log() の実装で、これにより pow() の指数に小数が使えるようになった。また log() に必要な frexp() と ldexp()、定数 $LN2 と $SQRT2 も追加。 今回も 404 Blog Not Found:javascript - Mathを再発明してみた の JavaScript 実装を参考にした、というよりほぼ JS を Sass に翻訳しただけです。dankogai さんありがとうございます。 あと小さなアップデートとして atan2($y, $x) の $x が負のゼロ (-0) の場合の結果を修正した。Sass でゼロが正か負かを判別するには 1/-0.0 == 1/0 という式が必要みたいで、引数に渡すときは -

    MathSass v0.9.1
  • MathSass

    CSS で角度を扱う機会が増えてきたので、三角関数を中心にいくつかの数学関数を Sass 関数として実装してみてる。「三角関数を中心に」とかさらっと書いてるけど、書いてる人はタンジェントとか高校で習ってないと言い張る程度の理解なので注意。書いてるうちに芋づる式に増えて手に負えなくなってきたところで GitHub に公開することにした。 terkel/mathsass · GitHub ほんとは Ruby のモジュールで書けば簡単かつ精度も高いだろうし、将来 Sass のネイティブに実装されれば用なしになるわけだけど、勉強になるのでやってて満足度は高い。 これ系の Sass 実装でまとまったものは adambom/Sass-Math と Team-Sass/Sassy-math ぐらいしか見つけられなかったし、これらの中でもものによってバグってるっぽいのもあったので、ほかに 404 Blo

    MathSass
    yuiseki
    yuiseki 2013/04/14
  • 接頭辞つきのクラス名にマッチする CSS セレクター

    Kraken というフロントエンドのフレームワークのコードを見ていたら、なるほどと感心する CSS セレクターの書き方を見つけた。grid-one、grid-two みたいな接頭辞つきのクラス名にマッチするセレクターで、こんな感じ: [class^="grid-"], [class*=" grid-"] { /* ... */ } 単純に考えると [class*="grid-"] でいけそうな気がするけど、それだと foo-grid- みたいに頭に余計なものがついていてもマッチしてしまう。そこでホワイトスペースを接頭辞の前に置いて [class*=" grid-"] とすることでそれを避けている。すると今度は class="grid-one" みたいに class 属性の先頭で頭にホワイトスペースがない場合にマッチしないので、[class^="grid-"] という前方一致のルールを追加。

    接頭辞つきのクラス名にマッチする CSS セレクター
    yuiseki
    yuiseki 2013/03/06
  • JavaScript のビットマスクによるフラグの管理

    JavaScript のビットマスクをはじめて使った。というかビット演算子というものに触れるのがそもそもはじめて。最初は何が何やらわからなかったけど、以下のページなどを参考にしつつなんとかやってみた。 ビット演算子 - JavaScript | MDN ビットマスクによるフラグ - piglovesyouの日記 状況としては、ユーザー設定のフラグをビットマスクで管理していて、それを API を通じて GET/POST する、という感じ。ここでは例として、アプリケーションのユーザー設定で、各種ソーシャル系サービスと連携するかどうかみたいなデータを管理する場合を想定する。 まず、各フラグのデータを 1、2、4、8… という整数値で定義しておく。こういったデータは定数として扱うのでキーを大文字にすることが多い、らしい。 var social = { TWITTER: 1, FACEBOOK: 2

    JavaScript のビットマスクによるフラグの管理
  • 画像の最大幅を calc() で制御する

    画像の幅をコンテンツに合わせてフレキシブルにしたい場合、親要素の幅を超えないようにするには CSS の max-width プロパティに 100% を指定する。 img { max-width: 100%; border: 1px solid silver; padding: 0.25em; } ただ、画像にパディングやボーダーを持たせた場合、その分が親要素の幅より大きくなってしまうことがある (Fig 1)。 Fig 1: パディングとボーダーを持つ画像に `max-width: 100%;` を指定すると、親要素の幅を越えてしまうことがある これをつねに親要素に収めるようにするには、box-sizing プロパティを利用して画像の幅がパディングとボーダー込みで算出されるようにする、という手がある。 img { max-width: 100%; border: 1px solid sil

    画像の最大幅を calc() で制御する
  • 画像置換のあれへの補足

    先月あたり、CSS による画像置換テクニックの話題がにわかに盛り上がりを見せていました。その経緯について まとりさんの記事 で紹介されていますが、僕からも簡単に補足してみます。 まず、よく知られた画像置換のテクニックとしていわゆるファーク式がありました: /* Phark method */ .ir { height: 100px; width: 400px; background: url(image.png) no-repeat 0 0; text-indent: -9999px; } このテクニックは長らく利用され続けてきましたが、その代替として、パフォーマンス面でより良いとされる Scott Kellum さんのテクニック (ケラム式) が Jeffrey Zeldman さんの記事 で紹介されました: /* Kellum method */ .ir { height: 100px

    画像置換のあれへの補足
    yuiseki
    yuiseki 2012/05/02
  • キャプションの幅を画像の幅に合わせる

    Fig 1: Wikipedia のキャプションつき画像の例 ちょっとわかりにくいタイトルになってしまいましたが、つまり Wikipedia のやつ (Fig 1) みたいに、「画像 (またはビデオなどの埋め込みコンテンツ) の下にキャプションをレイアウトするとき、キャプションが複数行にわたる場合は画像の幅に合わせて折り返したい (ただし画像の幅はバラバラ)」というのをシンプルかつ汎用的なかたちで実現する CSS を考えてみました。というか、このブログのレイアウト用にけっこう長いことあれこれ考えてたもののこれといった手が思いつかなくて放置していたんですが、上手い解決を Stack Overflow でみつけた のでパクった、という話です。 <figure> <img src="/img/photo.jpg"> <figcaption>Lorem ipsum dolor sit amet</

    キャプションの幅を画像の幅に合わせる
    yuiseki
    yuiseki 2012/01/08
  • CSS のみで吹き出し

    hail2u.net - Weblog - Pure CSS な吹き出し に触発されて、画像や JavaScript を使わずに CSS だけを使って「吹き出し」を作る方法を僕も考えてみた。 Demo: CSS のみで吹き出し マークアップは 2 重の要素があれば OK。ここではそれぞれ bubble と body というクラスを付与した div と p を例に説明する: <div class="bubble"> <p class="body">Speech!</p> </div> CSS の最低限必要な部分のみを抜き出すと以下のとおり。これは背景が黒いボックスの下に左向きのしっぽを出す場合の例: .bubble { float: left; /* または position: absolute; */ border-left: 10px solid black; border-bottom

    CSS のみで吹き出し
    yuiseki
    yuiseki 2012/01/07
  • CSS ルールセット構造図

    ごく基的なことなんだけど、すぐに忘れてごっちゃになるので図を描いた。せっかくなので上げとく。詳しくは CSS3 module: Syntax や CSS の名前の整理 - IT戦記 などを参照のこと。

    CSS ルールセット構造図
  • Microdata + schema.org を実際に使ってみる

    schema.org は GoogleMicrosoft (Bing)、Yahoo! という Web 検索の大手 3 社が共同で取り組んでいる試みで、より構造化されたマークアップのための共有の語彙集 (vocabulary) を提供しようというものです。この schema.org の語彙を利用して、実際のマークアップに Microdata を追加する具体例をいくつか考えてみました。 schema.org の アイテム型 (item type) は 階層 (hierarchy) のかたちで定義されています。型ごとに独自の プロパティ が定義され、上位の型のプロパティは下位の型に引き継がれます。最上位は Thing という汎用の型で、name、url、image、description というもっとも基的なプロパティが定義されています。そしてその下に CreativeWork、Event、

    Microdata + schema.org を実際に使ってみる
    yuiseki
    yuiseki 2011/09/02
  • Opera 10.50 の CSS バグ: input 要素に border-radius

    Opera 10.50 では border-radius プロパティがサポートされましたが、input 要素に対して指定する場合、ちょっとしたバグがあるので注意が必要です。そのバグとは、ボーダーを消した (border-width: 0; または border-style: none; を指定した) input 要素に border-radius を指定すると、background-color の指定が無効になる、というものです。10.51 でも修正されませんでした。 たとえば以下の場合、背景色の指定は反映されません。 input[type="submit"] { border: 0; border-radius: 4px; background: #0060c0; } このバグを回避するには、background-color と同時に、background-image に透過画像を指定し

    Opera 10.50 の CSS バグ: input 要素に border-radius
    yuiseki
    yuiseki 2011/04/22
  • 1