У меня есть 2 вопроса.
Изучая уроки Майкла Хартла, я научился добавлять файл custom.css.scss, чтобы позаботиться о CSS. Мой вопрос: ПОЧЕМУ, чтобы материал CSS не попал в "kalendar.css.scss", который выбирает это имя из моего контроллера "Kalendar" или почему CSS не входит в "application.css"?
Но я знаю, что я могу сделать что-то вроде:
<%= javascript_tag "alert('hey you!')" %>
РЕДАКТИРОВАТЬ:
Теперь в моем "vendor/assets/javascripts/textEffect.js" у меня есть этот код, который является плагином, который я загружаю онлайн.
(function($) {
function shuffle(a) {
var i = a.length, j;
while (i) {
var j = Math.floor((i--) * Math.random());
var t = a[i];
a[i] = a[j];
a[j] = t;
}
}
function randomAlphaNum() {
var rnd = Math.floor(Math.random() * 62);
if (rnd >= 52) return String.fromCharCode(rnd - 4);
else if (rnd >= 26) return String.fromCharCode(rnd + 71);
else return String.fromCharCode(rnd + 65);
}
$.fn.rot13 = function() {
this.each(function() {
$(this).text($(this).text().replace(/[a-z0-9]/ig, function(chr) {
var cc = chr.charCodeAt(0);
if (cc >= 65 && cc <= 90) cc = 65 + ((cc - 52) % 26);
else if (cc >= 97 && cc <= 122) cc = 97 + ((cc - 84) % 26);
else if (cc >= 48 && cc <= 57) cc = 48 + ((cc - 43) % 10);
return String.fromCharCode(cc);
}));
});
return this;
};
$.fn.scrambledWriter = function() {
this.each(function() {
var $ele = $(this), str = $ele.text(), progress = 0, replace = /[^\s]/g,
random = randomAlphaNum, inc = 3;
$ele.text('');
var timer = setInterval(function() {
$ele.text(str.substring(0, progress) + str.substring(progress, str.length).replace(replace, random));
progress += inc
if (progress >= str.length + inc) clearInterval(timer);
}, 100);
});
return this;
};
$.fn.typewriter = function() {
this.each(function() {
var $ele = $(this), str = $ele.text(), progress = 0;
$ele.text('');
var timer = setInterval(function() {
$ele.text(str.substring(0, progress++) + (progress & 1 ? '_' : ''));
if (progress >= str.length) clearInterval(timer);
}, 100);
});
return this;
};
$.fn.unscramble = function() {
this.each(function() {
var $ele = $(this), str = $ele.text(), replace = /[^\s]/,
state = [], choose = [], reveal = 25, random = randomAlphaNum;
for (var i = 0; i < str.length; i++) {
if (str[i].match(replace)) {
state.push(random());
choose.push(i);
} else {
state.push(str[i]);
}
}
shuffle(choose);
$ele.text(state.join(''));
var timer = setInterval(function() {
var i, r = reveal;
while (r-- && choose.length) {
i = choose.pop();
state[i] = str[i];
}
for (i = 0; i < choose.length; i++) state[choose[i]] = random();
$ele.text(state.join(''));
if (choose.length == 0) clearInterval(timer);
}, 100);
});
return this;
};
})(jQuery);
И в моем "представлении" у меня есть файл с контентом:
<p class="my-container">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
в моем "application.js" у меня есть:
//= require textEffect
и в "app/assets/javascripts/custom.js.coffee" У меня есть
$(document).ready() ->
$("#my-container").unscramble();
Если, конечно, я ошибаюсь, я предполагаю, что на загрузке страницы я должен увидеть запуск текстового эффекта. Но ничего не происходит. Есть что-то, что я пропустил или делаю неправильно?
По-видимому, Майкл просто использует этот файл custom.css.scss
в качестве примера. Вы можете использовать любое имя файла, которое лучше всего подходит для организации вашего проекта.
Например, я хотел поставить макет связанные элементы в layout.css.scss
, и я поставил Kalendar
, связанные CSS в kalendar.css.scss
. Единственная причина, по которой я не буду использовать application.css
для ваших пользовательских стилей, заключается в том, что application.css
является файлом манифеста.
Файл манифеста - это файл, который сообщает рельсам, какие активы включать с использованием синтаксиса запятой. Например, в манифесте css
/* Manifest File
*= require_tree .
*/
Это говорит о том, что рельсы включают весь каталог таблиц стилей. Вы можете вручную включать файлы с
*= require layout
*= require my_file_name
Точка этой системы состоит в том, чтобы отобразить все активы в один файл, это ускоряет загрузку страницы, и в процессе производства вам нужен только один файл css/js. Чтобы включить файл манифеста, вы просто пишете
= stylesheet_link_tag 'manifest_file_name'
Имена файлов предназначены исключительно для организации.
//=require downloadedPlugin
плагина. Я прав?