^GSPCとSPXとSPYの違い
^GSPC
S&P500指数のティッカー。プライスリターン。
SPX
S&P500指数をオプション取引するとき、原資産としてのS&P500指数のティッカー。^GSPCと数値的には一緒。
vue-cliでVue3にTailwindcss2を導入しようとしてPostcss8が必要だと警告が出た場合の解決方法
結論から言うとvue-cliのバージョンを5.0.0-alpha.5以上にあげましょう。
2021年4月23日現在、vue-cliをインストールし、Vueプロジェクトを作成した上で、tailwindcssを公式に従って追加するとPostcss8が必要ですと怒られます。
上記のリンクではCreating your projectでviteを使用していますが、Vue-Cliから作成のは以下の通りです。
vue-cliをインストール
yarn global add @vue/cli
Vueプロジェクトを作成
vue create hello-world cd hello-world
tailwindcssをインストール
yarn add tailwindcss@latest postcss@latest autoprefixer@latest --dev
configuration filesを作る
npx tailwindcss init -p
以下2ファイルを修正
// tailwind.config.js
module.exports = {
purge: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}
// src/main.js
import { createApp } from 'vue'
import App from './App.vue'
import './index.css'
createApp(App).mount('#app')以下作成
/* ./src/index.css */ @tailwind base; @tailwind components; @tailwind utilities;
これでbuildすればいける!と思います。いけません。
Postcss8が必要だと怒られます。package.jsonにはPostcssのバージョンが8になっているし・・・
ネットの海で漂流を続けた結果、以下の情報にたどりつきました。
vue-cliのバージョン情報
vue-cli/CHANGELOG.md at dev · vuejs/vue-cli · GitHub
最新版は5.0.0-alpha.8だったのでこれに上げます。
vue upgrade --to 5.0.0-alpha.8 @vue/cli-service vue upgrade --to 5.0.0-alpha.8 @vue/cli-plugin-babel vue upgrade --to 5.0.0-alpha.8 @vue/cli-plugin-eslint vue upgrade --to 5.0.0-alpha.8 @vue/cli-plugin-router
これで無事ビルドが通りました。
Nuxt.js^2.14.12でPostCSS プラグインを追加する際にエラーが出た時の解決方法
Nuxt.js^2.14.12に postcss-nestedを追加したかったので、公式に則って設定をするとビルド時にエラーが出ます。
How to add PostCSS plugins? - NuxtJS
まず、プラグインの追加。
yarn add postcss-nested --dev
nuxt.config.jsに追加したのはこちら。
build: {
postcss: {
plugins: {
'postcss-nested': {}
}
}
}エラー内容
Error: PostCSS plugin postcss-nested requires PostCSS 8.
Nuxt.js^2.14.12にはPostCSS 7が使われているみたいなので、postcss-nestedのバージョンをPostCSS8対応する前のバージョンを指定してエラーが出ずビルドが完了した。
yarn add postcss-nested@4.2.3 --dev
Contactform7でチェックボックスにBootstrap4のボタンデザインを適用する
Contactform7でチェックボックスにBootstrap4のボタンデザインを適用する場合に2時間くらいハマったのでメモ。
https://getbootstrap.com/docs/4.4/components/buttons/#checkbox-and-radio-buttons
まずは完成形。
Contactform7でのフォームに入力
<div class="form-group">
<label class="col control-label">チェックボックス</label>
<div class="col">
[checkbox naiyo use_label_element "チェックボックス1" "チェックボックス2" "チェックボックス3"]
</div>
</div>Javascriptに追加
ボタン(.btn-secondary、.btn-success)はお好きなものに。
$('.wpcf7-checkbox > .wpcf7-list-item, .wpcf7-radio > .wpcf7-list-item')
.addClass('btn-group-toggle')
.attr('data-toggle', 'buttons');
$('.wpcf7-form input[type=checkbox], .wpcf7-form input[type=radio]')
.closest('label')
.addClass('btn btn-secondary');
$('label.btn.active')
.removeClass('btn-secondary')
.addClass('btn-success');
$('.wpcf7-list-item-label').on('click', function () {
if ($(this).parent().hasClass('active')) {
$(this).parent().removeClass('active');
} else {
$(this).parent().addClass('active');
}
});ハマった理由は、Contactform7ではラベルのテキストがスパンで囲まれているのだが、
そうすると、テキスト部分(.wpcf7-list-item-label)がクリックで反応してくれない。外周部分は反応する。
まず、テキスト部分だけが反応しないことがわからなかった。
<div class="form-group">
<label class="col control-label">チェックボックス</label>
<div class="col">
<span class="wpcf7-form-control-wrap naiyo">
<span class="wpcf7-form-control wpcf7-checkbox">
<span class="wpcf7-list-item first btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="checkbox" name="naiyo[]" value="チェックボックス1">
<span class="wpcf7-list-item-label">チェックボックス1</span>
</label>
</span>
<span class="wpcf7-list-item btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="checkbox" name="naiyo[]" value="チェックボックス2">
<span class="wpcf7-list-item-label">チェックボックス2</span>
</label>
</span>
<span class="wpcf7-list-item last btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="checkbox" name="naiyo[]" value="チェックボックス3">
<span class="wpcf7-list-item-label">チェックボックス3</span>
</label>
</span>
</span>
</span>
</div>
</div>テキスト部分をクリックしても、ボタンを押した場合と同じようにactiveが付与されるようにする。
$('.wpcf7-list-item-label').on('click', function () {
if ($(this).parent().hasClass('active')) {
$(this).parent().removeClass('active');
} else {
$(this).parent().addClass('active');
}
});
swiperの横幅がモダンブラウザで100%にならない場合
swiperで.swiper-containerにwidth: 100vw;を付与しているのに、右側にちょっとだけ空白ができてしまう問題。
swiperを以下のようにinitすることで解決。
window.addEventListener('load', () => { // init swiper here }, false);
参考
Wrong width until page is resized on Firefox · Issue #2218 · nolimits4web/swiper · GitHub
contactform7にbootstrap4のカスタムバリデーションスタイルを適用する方法
前提
- wordpress
- Bootstrap4
- contactform7
バリデーションを行って、boostrap4のカスタムバリデーションスタイルを適用したい。
参考リンク
https://getbootstrap.com/docs/4.3/components/forms/#custom-styles
上記を参考にして、以下を追加して送信しても、必須項目が入力されていない状態でvalidになってしまう。
<script> // Example starter JavaScript for disabling form submissions if there are invalid fields (function() { 'use strict'; window.addEventListener('load', function() { // Fetch all the forms we want to apply custom Bootstrap validation styles to var forms = document.getElementsByClassName('needs-validation'); // Loop over them and prevent submission var validation = Array.prototype.filter.call(forms, function(form) { form.addEventListener('submit', function(event) { if (form.checkValidity() === false) { event.preventDefault(); event.stopPropagation(); } form.classList.add('was-validated'); }, false); }); }, false); })(); </script>
contactform7では必須項目でもrequired属性が付与されないので、以下の1行をスクリプトに追加してあげる。
$('.wpcf7-validates-as-required').attr('required', true);