CSS Как сохранить тела html-файла и включенных файлов от слияния?

#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 попадает в код, он может быть перезаписан. Также в зависимости от специфики (реального слова) стиля он снова может быть перезаписан.

Это может помочь в этом.

Калькулятор специфики 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.