#php #html #css
#php #HTML #css
Вопрос:
Из того, что показали мне мои проб и ошибок, заключается в том, что когда я (используя php) включаю другой php-файл, тела в основном сливаются.
У меня есть файл CSS, который влияет на тело основного файла с классом «main». Файл CSS также влияет на тело включенных файлов с классом «nav».
Похоже, что на оба тела каждого файла влияют оба стиля, которые нацелены на каждый класс (даже если классы в каждом из тегов тела разные).
Я ошибаюсь? Если нет, есть ли способ обойти эту проблему? Спасибо!
Включенный файл nav (который включает файл css (я показываю только код, относящийся к телу):
<body class="nav">
<ul class="navbar">
<li>
<form action="login.php" method="post">
<input id="email" type="text" name="email" placeholder="Email">
<input id="password" type="password" name="password" placeholder="Password">
<input type="submit" value="Login">
</form>
</li>
Основной индексный файл, включающий файл nav :
<body class='index'>
<div class="block-signUp">
<h1>Sign Up</h1>
<form action="" method="post">
<input class="firstname" type="text" name="firstname" placeholder="First Name"
value="<?php echo($_POST['firstname']) ?>">
<input class="lastname" type="text" name="lastname" placeholder="Last Name"
value="<?php echo($_POST['lastname']) ?>"> <br>
<input class="email" type="text" name="email" placeholder="Email"
value="<?php echo($_POST['email']) ?>"><br>
<input class="password" type="password" name="password" placeholder="Password"
value="<?php echo($_POST['password']) ?>"><br>
<div class="error-message hidden"></div>
<input type="submit" value="Sign Up"><br>
</form>
<div><a href="login.php">Already Have An Account?</a></div>
</div>
</body>
Единственный файл CSS на всем веб-сайте, который содержит файл nav :
body.nav { /* This code effects the body in the index file as well for some reason */
margin-top: 150px; /* Make nav bar at top of screen */
}
Комментарии:
1. Действительно не уверен, что вы подразумеваете под «когда я включаю другой php-файл, тела в основном сливаются» . Когда вы используете
include
илиrequire
, вы в основном вводите скрипт одного PHP-файла в другой в момент выполнения. Любой<?php ... ?>
скрипт включен, и любой вывод буферизуется.2. Вероятно, лучше всего включить ваши css-файлы, так как вы могли включить что-то в обоих случаях.
3. @Phil Я объяснил, что происходит выше. CSS для каждого тела по какой-то причине влияет на другое. Несмотря на то, что я нацеливаю тело на его уникальный класс в каждом файле.
4. Я включаю только файл css в включаемый файл.
5. (допустимая) html-страница не может иметь несколько
<body>
тегов
Ответ №1:
неверно. Во-первых, include
и require
является ли внедрение скрипта из одного файла в __FILE__
(главный файл, файл, открытый в .htaccess / URL), например:
file1.php
<?php
$first_script_var = true;
include 'file2.php';
?>
file2.php
<?php
if(isset($first_script_var) amp;amp; $first_script_var === true){
echo 'True';
}
?>
Теперь file1.php будет выглядеть примерно так:
<?php
$first_script_var = true;
include 'file2.php';
?>
<?php
if(isset($first_script_var) amp;amp; $first_script_var === true){
echo 'True';
}
?>
But if you would be using AJAX requests to the HTML DOM Element you would be requesting a file to the `html` tag it would load in the body tags.
Пример:
<
file1.php
<html>
<head>
<title>Hello world</title>
<script src="jquery.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
$.ajaxSetup({cache:false});
});
function load(){
$("html").load("file2.php?string=" document.getElementById("str").value); // $("html") is a selected, it basicly means we have selected the html tag. and the .load(); is a function from JQuery.
}
</script>
<div>
<input type="text" id="str" placeholder="Echo 'text'" />
<br />
<input type="button" onclick="load();" />
</div>
</body>
</html>
file2.php
<head>
<title>New title</title>
</head>
<body>
<?php
if(isset($_GET['string'])){ echo $_GET['string']; }
?>
</body>
это приведет к замене старого заголовка и старого тега body на новый заголовок и новый тег body, помните! Старые функции javascript все равно будут сохранены.
Ответ №2:
Если у вас есть CSS, объявленный в обоих включенных файлах, и стили не привязаны конкретно к элементам на этой странице, вы можете получить конфликты. Это может особенно произойти, если вы стилизуете базовые теги, такие как body, span, div, table и т. Д.
Когда страница компилируется в браузере, все объединяется. Короче говоря. В зависимости от того, в каком порядке CSS попадает в код, он может быть перезаписан. Также в зависимости от специфики (реального слова) стиля он снова может быть перезаписан.
Это может помочь в этом.
Убедитесь, что ваш класс main и nav не находятся на обоих или особенно не стилизованы на обеих страницах
Еще одна вещь, которую я вижу, делают некоторые люди, которые являются новичками в MVC (model view controller) и вызывают частичные страницы, заключается в том, что они включают теги HTML и BODY на странице, которая вызывается, когда это не нужно.
Комментарии:
1. У меня есть только 1 css-файл, который включен в навигацию. Тогда все страницы на моем сайте включают этот файл nav, который содержит css.
2. Просмотрев веб-страницу в разделе Google Chrome, я вижу, что тело сливается, и его класс становится равным nav. Вот что происходит. Итак, мне нужно найти решение этой проблемы :
3. Вероятно, лучше всего иметь свой CSS-файл в отдельном внешнем файле. Затем вы можете связать один большой файл CSS в вашем основном файле HTML / PHP или связать CSS, которые конкретно влияют на навигацию в этом файле HTML / PHP. В любом случае вам нужно выяснить, как вы хотите использовать свой CSS.