Skip to content

Instantly share code, notes, and snippets.

@externvoid
Last active August 12, 2018 10:17
Show Gist options
  • Select an option

  • Save externvoid/ee62c5d7caa031b6227b907b9ba3eb83 to your computer and use it in GitHub Desktop.

Select an option

Save externvoid/ee62c5d7caa031b6227b907b9ba3eb83 to your computer and use it in GitHub Desktop.
Web Techあれこれ、初版2018-07-22Sn

1. カスタムデータ属性

カスタムデータ属性、data-foo: "some information"ってやつは、動的に書き換え可能。 data-foo: "other information"って感じで! 書き換えで、タグの色が変わる。red -> blue

<div id='foo' data-foo='some information'>bar</div>
var el = getElementById('foo')
el.dataset.foo = "other information"
<style>
div[data-foo='some information']{
  background: red;
}

div[data-foo='other information']{
  background: blue;
}
</style>

2. http-equivこれ何?

レスポンス・ヘッダーの

Content-Type: text/html; charset=utf-8"

と同じ指令をbrowserへ送るためのhtmlタグ

<meta http-equiv="Content-Type" content="text/html" charset="utf-8"> 

httpレスポンスと同等(equiv)との意味。 equivalent to "Content-Type: text/html; charset=utf-8" in http response header meta http-equiv="Content-Type" content="text/html" charset=utf-8

3. name属性の使い所

var process = function(){
  document.fm.name.value = "foo" // <= name属性はプロパティーとなる
}

こいつで、下記のテキストボックスにfooを書き込める。

<form name='fm' onsubmit='return process()'>
  <input type='text' name='name' value='にゅうりょくしてね'>
  <input type='submit' value='送信'>
</form>

4. https化

ssl_moduleが動いていない事を確認

:672> ssh uk sudo apachectl -M
Loaded Modules:
 core_module (static)

opensslコマンドでserver.key, server.crt(証明書)を作る。出来たファイルは、/etc/ssl/private/フォルダにでも放り込んでおく。(debianの場合) 注意:CentOSの場合はapache2がhttpdであったり、色々異なる。 /etc/apache2/sites-available/default-ssl.confを編集。 gg://debian apache2 https、で検索

$ sudo a2enmod
Your choices are: 
access_compat 
actions 
...                                                                             
speling 
ssl <-*
status 
substitute 
suexec 
unique_id 
userdir 
usertrack 
vhost_alias
xml2enc
Which module(s) do you want to enable (wildcards ok)?

sslモジュールが利用可能か?確認し、

>sudo a2ensite default-ssl
>sudo a2enmod ssl
>sudo systemctl restart apache2

ただし、opensslで作ったcrtファイルだと、browserが警告を出す。 注:Fully Qualified Domain Name = FQDN

サーバー証明書の作りかた(openssl)

HTTPS (Let's Encypt) をRaspberry Pi (Stretch)で設定

5. JavaScriptのprototype

コンストラクタ関数と共に使って、メソッドを定義する時に使う。

var User = function(name, age){                                                 
  this.name = name
  this.age = age
}
User.prototype.getName = function(){
  return this.name
}
User.prototype.getAge = function(){
  return 'Age is ' + this.age
  // return 'Age is "${this.age}"' // テンプレート・リテラル
}
obj = new User("foo", 1)
obj.getName() // => foo
obj.getAge() // => Age is 1

JavaScriptの継承

6. font-size emは特殊

固定単位ではなく、変動単位。ephemeral = はかない 以下の例では、文字サイズが徐々にデカくなる。inheriteの箇所は、body要素の値を引き継ぐ。inherite = 計算値を親要素から引き継ぐ。

<html>
  <body>
    はろーem, 何の略? ephemeral unit
    <p class="part1">はろー</p>
    <p class="part2">はろー</p>
  </body>
</html>
:root {
  font-size: 1.5em;
}
body {
  font-size: 1.5em;
}
.part1 {
  font-size: 1.5em;
}
.part2 {
  font-size: inherit;
}

7. padding, marginの可変個引数

4個(上下だけ10px, 左右は0px)

p {
  margin: 10px 0 10px 0; // 上 右 下 左
  }

2個(上下だけ10%, 左右は0)

p {
  margin: 10% 0; // 上下 右左, 親要素に対して10%
  }

3個の場合は、上、左右、下、1この場合は上下左右

8. marginの相殺

margin-top, margin-buttomが並ぶと、大きい方が優先。

9. ネガティブmarginの使い所

画面一杯に表示するには、ネガティブmarginを左右に設定、値には意味なし

.top-menu {
  margin: 0 -100%
}

10. jaは言語?国?

lang=ja-JP, en-US, en-GB, 言語-国

11. position:static, relativeこれ何?

親要素に対する子要素の位置をしていするtop, leftの値の原点を示す。

<p>position:static<span>staticの場合</span></p>
p {position: relative;}
span {position: static;}

これ何?top, right, buttom, leftの属性は無視される。

  • relative: 親の内容の右下が原点
    1. absolute: 左上が原点(親がposition:static以外)
    2. Windowの左上(position:static, default)⚠️
  • fixed: 親関係なし、Windowの左上が原点。◀️固定メニューが実現できる。

style sheet reference

12. Vue.js vs React.js

Vue.component('todo-item', {
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})
function Todo-item(props) {
  const todo = props.todo;

  return (
    <li>{ todo.text }</li>
  );
}
class Todo-item extends Component {
  constructor(props) {
    super(props)
    this.state = { things: null, done: null }
  }
  render() {
    return(
    <li>{ this.state.things } + { this.state.done }</li>
  )}
}

Vue.jsの公式サイトを見たけど、v-directiveが多くて、学習コスト多そう。 2018-08-11St追記 Reactのclassコンポーネントでは、state, life cycle methodが使える。function componentでは使えない。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment