【ASP.NET】 OwinStartupAttribute を含むアセンブリが見つかりませんでした

ASP.NETの開発備忘録です。
1strentalserver(ファーストレンタルサーバー)でサイトの移動の作業中に下のようなメッセージが出てしまいました。
‘*****.***’ アプリケーションでサーバー エラーが発生しました。
アプリケーションを読み込もうとして、次のエラーが発生しました。
– OwinStartupAttribute を含むアセンブリが見つかりませんでした。
– Startup クラスまたは [AssemblyName].Startup クラスを含むアセンブリが見つかりませんでした。
OWIN 起動検出を無効にするには、appSetting owin:AutomaticAppStartup (値は “false”) を web.config に追加します。
OWIN 起動アセンブリ、クラス、またはメソッドを指定するには、完全修飾起動クラス名または構成メソッド名を指定した appSetting owin:AppStartup を web.config に追加します。
レンタルサーバの環境と開発環境の差が出て、Startup クラスを含むアセンブリが見つからないのかな?
詳しく調べればわかるかもしれませんが、今回は時間もないので、エラーメッセージ通りにOWIN 起動検出を無効にすることにします。
config.sysファルに以下を追加します。

 

<configuration>
<appSettings>
<add key=”owin:AutomaticAppStartup” value=”false” />
</appSettings>
</configuration>

 

ローカル開発環境でエラーが出ないことを確認して、発行を行い確認しましたが、エラーはなくなり正常に表示されるようになりました。
初めて見たエラーだったので、とりあえず対応を開発備忘録として残しておきます。
以上、OwinStartupAttribute を含むアセンブリが見つかりませんでしたの対応備忘録でした。

Windowsのレンタルサーバ探し

今日は、Windowsのレンタルサーバ探しの備忘録です。

Windowsのレンタルサーバは運営している会社が少なくて、選択肢が少ないです。
現在仕事はもっぱら Windows azure を利用していますが、ホームページは以前に作ったホームページをそのまま使いたいし、メールも使いたいし、Wordpressも使いたいし、写真とかのコンテンツも起きないなどの要件もあって、windows azure では高くついてしまうのでパスしようかと。

そこで、サクッとググるとwindows azure 以外に3つの会社が出てきました。

1stレンタルサーバー 「WINDOWS共用レンタルサーバー」
WILL@NET 「共用サーバー」
ウィンサーバー 「共用サーバー」
※後は海外のサーバを利用するという手も有りますが、ちょっと敷居が高そうなので今回はパスしようと思っています。

Windowsレンタルサーバーへの要件は、以下が使えることです。
1)ASP.NET
2)SQL Server
3)マルチドメイン
4)サブドメイン
5)共有SSLもしくはそれに代わるもの

後は、Wordpressも使えたらなお良いってところでしょうか。
Wordpressに関しては、すぐに重たくなるようなら別途他で安いLinuxベースのサーバを借りようと思ってます。

で。まとめてみると。(※2016/12/15日現在)

1stレンタルサーバー WILL@NET ウィンサーバー
ASP.NET  4.6まで  4.5まで  4.0まで
SQL Server  レギュラープランで対応 対応
※容量に注意
 対応
マルチドメイン  2個まで 5個まで 記載なし
非対応(1個)
サブドメイン 無制限  5個まで  記載なし
共有SSL 独自ドメイン
SSL証明書
が無料
独自ドメイン
SSL証明書
が無料
※固定IPアドレス
料金必要
記載なし
有料SSLのみ?
12ヶ月契約  1,296円  1,080円  864円

値段相応な気がします。
1stレンタルサーバーのドメイン数が少ないのと料金が高いのがネックですが、1stレンタルサーバーが一番妥当な気がします。
尚、使い勝手等は調べていません。例えば、「独自ドメインSSL証明書が無料」となっていますが、本当に無料なのか?簡単に設定できるのか?など。
使ってみて初めて分かることも多いので。
1stレンタルサーバーのお試しプランの申し込みですが、失敗した雰囲気のメッセ-ジが表示されましたが、登録できていたようです。この手の申し込みは慣れているのでが、判りづらかったです。

追記(2016/12/19)
1stレンタルサーバーを利用していて、突然ログインができなくなり、運営に連絡すると変更したパスワードが初期化されて、「これで入れなかったら連絡ください」と返信が・・・
次に、MSSQLのデータベースを作ったときに、myLittleAdminでログインしようとして、アドレスが解決できずにエラーになりログインできず。運営にサーバのアドレスを照会するとDNS管理を外部で行っている場合は、サポート対象外ですと2日後に連絡あり。
FAQには「弊社サーバーへ接続するには、DNSサーバーへの登録作業が必要となりますが、
ドメイン名の管理は他社となるため、お客様自身にて弊社指定DNSサーバーへ変更作業を
行っていただく必要がございます。」と有るだけで、サーバのアドレスを教えて貰えないとは思って居なかったため、作業中断状態。
次に、MySQLのデータベースを作ったときにphpAdminでパーミッションエラーでログインできず、運営に連絡すると、いつの間にかできるようになっていた。

DNSについては手間は掛かるけれど設定で済む問題なので、「まぁ、良いか」とも思ったけれど、1stレンタルサーバーの評判で見た通り、サポートが雑なので不安になります。
数日間移行を進めて来ましたが、WILL@NETに変更しようかと。
WILL@NETのネックはDBの容量が安いコースだと100Mしかないことです。
まぁ、本格運用には使わないので大丈夫だとは思うんだけどね~。

追記(2016/12/28)
WILL@NETに変更しようかと思いましたが、今度は独自SSLを行いたい場合、費用が掛かってしまいます。悩ましい。。。
最近は、Let’s Encrypt (レッツ・エンクリプト)という証明書が使え、無料で入手可能です。
Let’s Encryptに関してはまた別の機会に備忘録しますが、私は自分が使っているDNSの管理会社から「※Let’s Encrypt SSL証明書は90日ごとに更新が必要となります。」という制約付きですが、簡単に入手できます。
尚、Let’s Encryptのルート証明書はIdenTrustのものが用いられており、幅広いプラットフォームに対応していますが、ガラケーなど一部の端末は対応していないのでその点だけ注意です。

で、WILL@NETにするかどうかも有るのですが、以前から興味は有ったものの、敷居が高かった海外サーバの調査をしてみようと思います。
全部英語だし、問い合わせも英語っていうところが非常に心配ですが、とりあえず使い勝手と応答性のチェックを実施します。もし、良かったらそのまま契約するかも。

 

それから、windows azure との正確な比較等も行っていませんが、windows azure で独自ドメインを使用しようとすると貧弱なCPUパワーの割に料金が安いわけでもないので、やはり比較するに当たらないと思っています。
業務で利用するるならwindows azure でしょうが、今回は単なるホームページなので、格安にすませることにしました。

とりあえず、Windows レンタルサーバ探しの備忘録でした。

【jQuery】jQueryを利用するためには?

jQueryを利用するためには?

jQueryは、ご存知の通りHTML文書に組み込んで利用します。
利用すると言う事だけであればHTML文書から、jQueryファイルを取得し外部参照ソースとして呼ぶか、ネットワークで配信してもらえるサービスを利用して呼ぶか、のどちらかを行うだけでjQueryを使うことができるようになります。

jQueryファイルを取得するには

jQueryはたった一つのファイルを取得するだけです。

1.jQuery本家サイトのダウンロードページから、最新版ライブラリをダウンロードすることができます。
現在はVer3系になっています。

2.CDN(Content Delivery Network)と言われるネットワークで配信してもらえるサービスもあります。
Google CDN、Microsoft CDN、CDNJS CDN、jsDelivr CDNが紹介されています。
とりあえず、Google CDN、Microsoft CDNをリンクしておきますが、リンク切れするかもです。
Google CDN
Microsoft CDN

ダウンロードしても良いですし、ネットワーク経由で参照しても良いので自分の環境に合わせてください。
また、jQueryは良く更新が行われている「生きて進化しているライブラリ」です。
jQueryを取り巻く環境に合わせ進化していますので、仕様が更新されるチェックを行うことも大切です。

jQueryを利用してプログラミングする

すでにプログラミングの素養の有る方は、すぐにでも概要を掴み複雑なプログラムを作り始めることができるかも知れませんが、普通はそんなに簡単にできません。
まずは小さく単純な動作を確認できる環境を整え、いくつかのシンプルなプログラムを書き、動きを確かめながらjQueryに慣れていくことが肝要です。
これから引き続きプログラミング情報を載せていく予定ですが、簡単に手順を書きます。
1.HTML文書を作成する
2.<head>要素内でjQueryファイルを呼び出す
例)<script src=”https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js”></script>
3.jQueryを使って処理プログラムを書く
4.動かして動作確認する

HTML文書を作成したり、jQueryプログラムを書いたり、デバッグするのに、私はVisual studioを使用しています。
現在は無料のVisual Studio Communityが簡単に?利用できますのでVisual Studio Communityを使うのも良いですね。
一応リンク先を付けておきます。
visual studio 2015 community

【jQuery】jQueryとは

jQueryとは

jQueryとは、メジャーなJavaScriptライブラリです。
JavaScriptはWebブラウザ上でいろいろなことが処理できるプログラミング言語ですが、JavaScriptを使って1からプログラムを書くと面倒なこととか専門家でないと難しいところを、jQueryがライブラリを提供してくれて比較的簡単にしてくれます。
なお、jQuery自身もJavaScriptで記述されています。

jQueryのJavaScriptを簡単に扱えるようにしてくれる特徴とは

◆複雑な処理をシンプルに記述できるようにしている
JavaScriptはWebブラウザ上で処理を行いますが、ご存知の通りWebブラウザにはいくつもの種類があり、各々でできたりできなかったりして、同じ処理をするにしてもWebブラウザに合わせてカスタマイズする必要がある場合もでき、複雑で面倒なことが起きます。
jQueryではその複雑で面倒な部分をライブラリ内で吸収しているので、異なるWebブラウザでも同じメソッドを使うことで同じような処理を行ってくれます。

◆CSSセレクタを使うことができる
CSSはWebブラウザに画面表示をどのようにするかを指示するための言語です。
CSSセレクタはHTMLの要素を複数選択し、処理を指示することができます。
CSSセレクタは、本来はJavaScriptとは異なるものですから、使用できなかった(し辛かった)のですが、jQueryではCSSセレクタを簡単に選択し操作できるようにしました。そしてCSSと同じように複数選択できるようになり、同じように短い記述でまとめて処理が書けるようになりました。

その他、jQueryの利用者が多いことからネットで検索すれば情報がたくさん出てきますし、プラグインも簡単に手に入ります。開発環境もVisual Studioでサポートされていたり、Webブラウザ上のデバッグもできたりします。

また、日々jQuery自身の更新もされており、jQuery自身がより良いものになっていっています。

【Android】AndoroidとPCをadbで接続ファイルを操作する

今日は、AndroidとPCをadbで接続する備忘録です。
実際には備忘録を残す必要もないのだけれども、たまにしか触らないので念のため備忘録しておきます。

1)お約束のadb devicesを行います。
  
adb devices
  ちゃんと接続されたら、接続一覧がでます。

2)ファイルを取得する時
 adb pull /sdcard/test.txt c:\test\test.txt
 adb pull /sdcard/test.txt .
とかします。

3)ファイルを配置する時
 adb push c:\test\test.txt /sdcard/test.txt
とかします。

4)ファイルの有無を確かめる時
 adb shell /sdcard/
とか
 adb shell /sdcard/test*
 とかします。

以上、AndroidとPCをadbで接続ファイルを操作するでした

【ASPNET】ASP.NET VB GridViewのヘッダーに行を追加する(修正版)

ASP.NET VB GridViewのヘッダーに行を追加する際に新たなことが分かったので、追加でシステム開発備忘録します。

以前にASP.NET VB GridViewのヘッダーに行を追加するという記事をシステム開発備忘録しました。
その際に、PostBackでおかしくなる旨の記述もしていたのですが、今回の修正で治るかもしれません。

前回の追加コーディングは。以下の通りです。

Private Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
 
If e.Row.RowType = DataControlRowType.Header Then
  Dim row As GridViewRow = New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal)
  For i As Integer = 0 To 11
    Dim cell1 As TableCell = New TableCell()
    cell1.Text = i.tostring + "月"
    row.Cells.Add(cell1)
  Next
  row.RowType = DataControlRowType.Header
  Me.GridView1.Controls(0).Controls.AddAt(1, row)
endif

今回、GridViewにtheadタグ、tbodyタグを追加したいと思い以下のコーディングを追加しました。

Private Sub GridView1_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowCreated

  Select Case (e.Row.RowType)
    Case DataControlRowType.Header
      e.Row.TableSection = TableRowSection.TableHeader  'theadを出力
    Case DataControlRowType.DataRow
      e.Row.TableSection = TableRowSection.TableBody    'tbodyを出力
    Case DataControlRowType.Footer
      e.Row.TableSection = TableRowSection.TableFooter  'tfootを出力
  End Select
End Sub

このコーディングを追加した結果、上で追加したレコードはTheadに入らずに、Tbodyに入っていました。
環境が異なるので今回は検証をしていませんので、あくまでも推測ですが、先回のPostBack時の不具合はこのことが原因と考えられます。
適切にthead部に入ってヘッダー行と認識されて居れば、PostBack時の処理で通常のレコードと見なされることは無いのではないかと思います。

そこで今回の結果を踏まえ、もう少し突っ込んで調べた結果、
TableSection
なるプロパティが有ることがわかりました。
TableSectionプロパティは、Table コントロールに配置されている TableRow オブジェクトの場所を取得または設定するのに使用されます。
使用できるテーブルの位置については、以下の通りです。

テーブル行セクション 表示モード
TableHeader ヘッダー行
TableBody テーブルの本体
TableFooter フッター行

TableSectionプロパティを設定する箇所は適当で良いと思いますが、私は直線に入れました。

row.TableSection = System.Web.UI.WebControls.TableRowSection.TableHeader
Me.GridView1.Controls(0).Controls.AddAt(1, row)

TableSection プロパティをTableHeaderに設定してヘッダーレコードを追加すると、正常にthead部に入ってくれました。

以上、ASP.NET VB GridViewのヘッダーに行を追加する(修正版)のシステム開発備忘録でした。

【ASP.NET】Grid_Viewのヘッダーなどをコピーして使用する際の注意

javascriptやjqueryを利用して、テーブルのヘッダーを固定させる時に、少し嵌ったのでシステム開発備忘録として残しておきます。

経緯はGrid_Viewのヘッダーを固定するプログラムをjqueryで書きました。
Grid_Viewのヘッダーは段組みがされて居て、その中にtableを使用している少し複雑なヘッダーでした。

丸っとコピーして使用しようとしたのですが、どうしてもズレてしまいます。
Grid_Viewのヘッダーをコピーを幾度か繰り返すプログラムを書いたところ、1回目と2回目でthのwidthに差が出ていることがわかりました。

これが何を意味するのか、良く分かりません。
一通り読込んだ後で、何らかの調整が入り差が出ているのかなぁ?程度で。。。
$(document).readyイベントでプログラムを書いていますので、DOMツリーの構築が終わった時点で実行されます。
DOMツリーの構築とは、ページ内容の解析とレンダリングが終わったと言うことらしいです。
では、レンダリングとは。。。

まずは、読み込んだHTMLを解析してDOMツリーを生成します。
構築と生成の違いも今一つわりませんが。。。要素を作ったと思って良いのかな?

次に、読み込んだCSSを解析してCSSの構造体を生成します。

更に、DOMツリーとCSSの構造体から画面表示に必要なレンダーツリー(Render Tree)を構築します。

その後、レンダーツリーが持つ各DOM要素の位置を決定します。レイアウトって言って良いのかな?

最後に、レイアウトに基づいて描画されます。

先ほど、$(document).readyイベントは「DOMツリーの構築が終わった時点で実行されます」と呪文のような言葉を知ってるだけで、DOMツリーの構築を良く知りません。
ググってみると次のようなことが書いてあるページも。。。『そこで利用するのがreadyイベントです。ポイントはページ全体(画像などを含む)の読込ではなく、ページ構成(DOM要素)を読み込んだ時点で処理するため、ページを表示する前に様々な準備ができる点です。』
と言うことは、DOMツリーの構築は『ページを表示する前に様々な準備ができる点』と有るように、レイアウトを行う前までのような。。。

だとすると、GridViewはtable-layoutをautoにしているため、読込み後に調整が入ったんだろうと思って居ましたがそれで良いのかも。
ただ実際のブラウザがどのように調整をしているかを知らないため、良く分からないのですが、、、

で、差が出るのを読込み後に調整が入ったんだろうと思いつつ、なぜズレるかわからないまま、調整をしながらデバッグしていたところ、Grid_Viewのcellpaddingが‐1に設定されているを発見しました。
実際、このGridViewのcellpaddingを0にしたところ、差がかなりなくなりました。
若干の誤差は出ているものの、妥協できる程度の差でした。

javascriptやjqueryを利用して、GridViewのヘッダーを固定させる時は、コピー先のテーブルとGridViewのcellpaddingが合致しているかをチェックしてみる価値は有るような気がします。
cellpaddingを‐1にすると、cellpaddingが追加されず、cellpaddingを0にするとcellpadding=0がテーブルタグに追加されます。

以上、javascriptやjqueryを利用して、テーブルのヘッダーを固定させる時に、少し嵌ったシステム開発備忘録でした。

【ASP.NET】ASP.NET 2015で空のtrが勝手に消される不具合

ASP.NET 2015の不具合と確定していないのですが、ASP.NET 2015で空のtrが勝手に消される不具合に遭遇しました。
なので一応、システム開発備忘録しておきます。

具体的な不可解な現象を引き起こしたコードは以下の通りです。

<table>
  <thead>
    <tr><tr>
  <thead>
<table>

  ↓ ※確実にセーブしてもどのタイミングかわかりませんが、以下のようになります。

<table>
  <thead>
  <thead>
<table>

空のtrが不要なタグと判断されたのかな?
実際、今までこのようなケースが無かったので、ASP.NET 2015の不具合かどうかもわかりません。
が、数回同じ現象が起きたので、条件によって引き起こされているのかな?

今回は下のような、動的にth要素をコピーするプログラムを書いていたので、

$(this).clone(true).appendTo($("#tableH > thead > tr");

空のtr(td要素を持たない)をhtmlに書き込んでいました。
静的なhtmlでは空のtr(td要素を持たない)は意味ないですからね。。。

で不具合の対策は、いろいろ考えるのは面倒なので、次のように変更しました。

$("#tableH > thead").append("<tr></tr>");
$(this).clone(true).appendTo($("#tableH > thead > tr");

今回は、空のtr(td要素を持たない)が消えてなくなる(削除される?)とは思って居なかったので、不具合を探すのに少し戸惑いました。
こんなケースも有るんだなぁ・・・程度の備忘録です。

以上、ASP.NET 2015で空のtrが勝手に消される不具合報告でした。

【CSS】テーブルヘッダーを縦スクロールで固定する方法

テーブルヘッダーを縦スクロールで固定する方法のシステム開発備忘録です。
テーブルのヘッダーを固定する要望は多いと思いますが、何かと面倒なプログラミングになってしまいます。

テーブルヘッダーを固定する方法

そこで、今回は主にCSSとjQueryでテーブルのヘッダーを固定する方法を調査テストしたので、その備忘録です。

1)テーブルのヘッダー部、ボディー部、フッター部をfloat: left;します。
  floatにすることでoverflowが有効になります。
  ヘッダー部、ボディー部、フッター部と横に伸びて行く事になります。
  そこで後程、折り返しが付くようにtdもしくはthの幅をjqueryにて求めてセットします。
2)ヘッダー部の高さを決めます。
  今回のテストでは200pxにしています。
  また、スクロールバーが表示されるように設定します。
3)th,tdの高さや幅を要件沿って設定します。
  jqueryで立ち上げ時に幅を求めます。
  幅が動的に変更されるような場合は再度設定する必要があります。
4)Jqueryでテーブル幅を設定します。
  今回は各thの幅+border幅を足して行きます。
  最後にテーブルのborder幅とスクロール幅を足しました。
  調整が必要な場合も有るようですので、動かして確かめてください。

コードを下に示します。

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  <style>
    /*thead,tbody,tfoot*/
    #tableA > thead,
    #tableA > tbody,
    #tableA > tfoot {
      float: left; /*overflowを有効化*/
    }
 
    #tableA > tbody {
      height: 200px;
      overflow: auto;
    }
 
    /*th,td*/
    #tableA th,
    #tableA td {
      height: 50px;
    }
    .cA{
      width:60px;
    }
    .cB{
      width:50px;
    }
    .cC{
      width:90px;
    }
    .cD{
      width:60px;
    }
    .cE{
      width:40px;
    }
    .cF{
      width:40px;
    }
    .cG{
      width:40px;
    }
 
    /*border*/
    #tableA {
      border: solid 1px black;
    }
 
    #tableA > thead > tr > th {
      border: solid 1px blue;
      background-color:lightblue;
    }
 
    #tableA > tbody > tr > td{
      border: solid 1px blue;
    }
    #tableA > tfoot > tr > td {
      border: solid 1px blue;
    }
  </style>
 
  <script type="text/javascript">
 
    $(document).ready(function () {
   //thの幅の合計を求める
      var w=0;
      $("#tableA > thead > tr >th").each(function (i) {
        w=w+$(this).width()+2;
      });
      $("#tableA").width(w + 16+2);
      $("#tableA > thead").width(w + 16+2);
      $("#tableA > tbody").width(w + 16+2);
      $("#tableA > tfoot").width(w + 16+2);
 
      $("#tableA > tr").width(w);

    });
  </script>
</head>
<body>
    <table id="tableA" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
      <caption>縦スクロール</caption>
      <thead>
        <tr>
          <th class="cA">A</th>
          <th class="cB">B</th>
          <th class="cC">C</th>
          <th class="cD">D</th>
          <th class="cE">E</th>
          <th class="cF">F</th>
          <th class="cG">G</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="cA">A1</td>
          <td class="cB">B1</td>
          <td class="cC">C1</td>
          <td class="cD">D1</td>
          <td class="cE">E1</td>
          <td class="cF">F1</td>
          <td class="cG">G1</td>
        </tr>
        <tr>
          <td class="cA">A2</td>
          <td class="cB">B2</td>
          <td class="cC">C2</td>
          <td class="cD">D2</td>
          <td class="cE">E2</td>
          <td class="cF">F2</td>
          <td class="cG">G2</td>
  </tr>
        <tr>
          <td class="cA">A3</td>
          <td class="cB">B3</td>
          <td class="cC">C3</td>
          <td class="cD">D3</td>
          <td class="cE">E3</td>
          <td class="cF">F3</td>
          <td class="cG">G3</td>
 </tr>
        <tr>
          <td class="cA">A4</td>
          <td class="cB">B4</td>
          <td class="cC">C4</td>
          <td class="cD">D4</td>
          <td class="cE">E4</td>
          <td class="cF">F4</td>
          <td class="cG">G4</td>
 </tr>
        <tr>
          <td class="cA">A5</td>
          <td class="cB">B5</td>
          <td class="cC">C5</td>
          <td class="cD">D5</td>
          <td class="cE">E5</td>
          <td class="cF">F5</td>
          <td class="cG">G5</td>
 </tr>
        <tr>
          <td class="cA">A6</td>
          <td class="cB">B6</td>
          <td class="cC">C6</td>
          <td class="cD">D6</td>
          <td class="cE">E6</td>
          <td class="cF">F6</td>
          <td class="cG">G6</td>
 </tr>
        <tr>
          <td class="cA">A7</td>
          <td class="cB">B7</td>
          <td class="cC">C7</td>
          <td class="cD">D7</td>
          <td class="cE">E7</td>
          <td class="cF">F7</td>
          <td class="cG">G7</td>
 </tr>
      </tbody>
    </table>
</body>
</html>

縦スクロールだけで有れば割と簡単にテーブルヘッダーの固定ができます。
以上、テーブルヘッダーを縦スクロールで固定する方法のシステム開発備忘録でした。

修正2020/06/12

以前載せていたコードが上手く動作しないことを発見しました。
原因は古いjQueryを参照しようとしていてGoogleapis.com から取得できない事でした。
下のバージョンがNGの読み込みです。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

修正したjQueryの参照先を下に示しておきます。

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

修正前のコードを参照してjQueryが動かなかった方が居られましたら、この場を借りてお詫びいたします。申し訳ありませんでしたm(_ _)m

【CSS】background-colorとbackgroundの違い

ふと、CSSのbackground-colorとbackgroundの違いって何だろう?って思いました。

いつもは背景色を指定する場合は、

<style>
  #TableA{
    background-color: #FF8888;
  }
</style>

のようにbackground-colorを使用しています。

しかし度々、以下のように書かれたものも見ます。

<style>
  #TableA{
    background: #FF8888;
  }
</style>

どちらも同じ結果になるとは言え、どう違うんだろうと思っていました。
もともと見た目のデザインに興味が無かったことが、今まではっきり知らなかった原因なのですが。。。

background-colorとbackgroundの違いを言うと、個別に設定するか、まとめて設定するかの違いでした。

背景の指定には次の指定ができます。

背景色を指定する background: ***;
背景の画像を指定する background-image: url(***);
背景画像の並び方を指定する background-repeat: ***;
背景画像の表示位置を指定する background-position: ***;
背景画像のスクロールについて指定する background-attachment: ***;
個別に指定する際は、上述のプロパティを使います。

逆に一括で指定したい場合は、backgroundプロパティを使います。
backgroundは、背景色や背景画像(並び方、スクロール、位置)を一括で指定するプロパティです。
このbackgroundプロパティを要素に対して設定すると、文書全体の背景をひとまとめに指定することができます。
具体的には、要素ID:TableAに対し、背景色(白)/背景画像(***.gif)/並び方(垂直方向)/表示位置(右上)/固定表示(固定する)

#TableA{
 background: #ffffff url(***.gif) repeat-y right top fixed;
}

このように一括して設定できます。

注意点としては、backgroundプロパティに指定していないプロパティは、デフォルトで設定されます。
例えば、

#TableA{
  background-image: url(***);
  background: #ffffff repeat-y right top fixed;
}

としてしまった場合、背景画像(***.gif)は指定されなかったとみなされます。
要は真っ白背景が表示されるだけです。

ちょっと気になったので、システム備忘録として載せておきます。